我正在使用PEAR的Mail包从我的脚本发送电子邮件。我很确定我已将所有内容连接并正确声明,但是当脚本运行时,它只是连接然后立即断开连接到我的邮件服务器而不实际发送电子邮件。
来自我的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端有一个错误消息或其他东西继续,但它所做的只是连接然后断开而没有其他解释。
答案 0 :(得分:2)
几天前我遇到了这个问题。尝试$mailer_params['auth'] = 'CRAM-MD5'
并获取更多信息,请尝试$mailer_params['debug']
并从命令行运行脚本。如果仍然无效,请尝试$mail_params['auth'] = 'LOGIN'
。
希望这会有所帮助。
答案 1 :(得分: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();
}
出于好奇,我还有其他一些问题:
您提到您的postfix服务器可以与其他应用程序一起使用,它们是否在同一台服务器上?这是远程请求,还是与邮件在同一服务器上的应用程序
您是否可以对工作服务器上的任何内容进行反向工程,以查看不同的内容?
您是否从与服务器上的内容相同的域发送电子邮件?
问题1和问题3背后的一些基础是,许多主机阻止或限制邮寄。这是因为垃圾邮件发送者会创建帐户并滥用它们,直到它们被禁止为止。这使得我们其他人诚实的人发送邮件很困难,但每天都会发生。
我希望这能提供一些思考,回复并让我们看看能否找到问题。