1

我正在使用 PEAR 的邮件包从我的脚本发送电子邮件。我很确定我已经正确连接并声明了所有内容,但是当脚本运行时,它只是连接然后立即断开与我的邮件服务器的连接,而没有实际发送电子邮件。

从我的 Postfix 日志中:

Nov 18 16:15:49 mailer postfix/smtpd[30346]: connect from xxx-xxx-xxx-xxx.static.cloud-ips.com[xxx.xxx.xxx.xxx]
Nov 18 16:15:49 mailer postfix/smtpd[30346]: disconnect from xxx-xxx-xxx-xxx.static.cloud-ips.com[xxx.xxx.xxx.xxx]

是什么赋予了?


<?php

  require_once('Mail.php'); // loads in PEAR Mail package

  $mailer_params['host'] = 'mailer.example.com';
  $mailer_params['port'] = 25;
  $mailer_params['auth'] = true;
  $mailer_params['username'] = 'user@mailer.example.com';
  $mailer_params['password'] = 'password';

  $mail =& Mail::factory('smtp', $mailer_params);

  $headers = array(
    'From' => 'user@example.com',
    'Reply-To' => 'user@example.com',
    'Subject' => 'Test Email'
  );

  $message = "whatever";

  $mail->send('Test <other.user@example.com>', $headers, $message);

?>

我知道我的 Postfix 服务器工作正常,因为我有几个其他应用程序使用它没有问题。此脚本中的用户凭据与其他应用程序中的用户凭据相同。

如果有帮助,我的 Postfix 服务器正在使用 SASL_auth(配置有 CRAM-MD5)。我希望我在 PHP 端或 Postfix 端有一条错误消息或其他内容,但它所做的只是连接然后断开连接,没有其他解释。

4

2 回答 2

2

几天前我遇到了这个问题。尝试$mailer_params['auth'] = 'CRAM-MD5'并获取更多信息,请尝试$mailer_params['debug']从命令行运行脚本。如果这仍然不起作用,请尝试$mail_params['auth'] = 'LOGIN'.

希望这可以帮助。

于 2009-12-01T12:43:58.027 回答
0

这是我要尝试的第一件事,看看您是否可以从 PHP 获得异常错误:

<?php

try {


      require_once('Mail.php'); // loads in PEAR Mail package

      $mailer_params['host'] = 'mailer.example.com';
      $mailer_params['port'] = 25;
      $mailer_params['auth'] = true;
      $mailer_params['username'] = 'user@mailer.example.com';
      $mailer_params['password'] = 'password';

      $mail =& Mail::factory('smtp', $mailer_params);

      $headers = array(
        'From' => 'user@example.com',
        'Reply-To' => 'user@example.com',
        'Subject' => 'Test Email'
      );

      $message = "whatever";

      $mail->send('Test <other.user@xxx.com>', $headers, $message);

    } catch (Exception $e) {
        echo "Exception: " . $e->getMessage();
    }

出于好奇,我还有一些其他问题:

  1. 您提到您的 postfix 服务器与其他应用程序一起使用,它们在同一台服务器上吗?这是远程请求,还是与邮件位于同一服务器上的应用程序

  2. 你能对工作服务器上的任何东西进行逆向工程,看看有什么不同吗?

  3. 您是否从与服务器上的内容相同的域发送电子邮件?

问题 1 和 3 背后的一些基础是大量主机阻止或限制邮寄的事实。这是因为垃圾邮件发送者会创建帐户并滥用它们,直到它们被禁止。这使得我们其他诚实的人很难发送邮件,但它每天都在发生。

我希望这能给我们一些思考,回复,让我们看看我们是否能找到问题。

于 2009-11-19T07:44:35.637 回答