我想使用pear邮件扩展名来发送SMTP身份验证的电子邮件。 网上有很多例子......这是我的代码:
<?php
require_once "Mail.php";
$body = "Testtext";
$subject = "SMTP Testmail";
$mail_to = "valid.adress@test.com";
$mail_from = "valid.sender.adress@othertest.com";
//SMTP Verbindungsdaten
$host = "valid.smtp.com";
$username = "invalidusername@othertest.com";
$password = "validpasswordforotheruser";
$smtp = Mail::factory('smtp',
array (
'host' => $host,
//'auth' => true,
'auth' => true,
'username' => $username,
'password' => $password
));
$headers = array (
'From' => $mail_from,
'To' => $mail_to,
'Subject' => $subject
);
$mail = $smtp->send($mail_to, $headers, $body);
if (PEAR::isError($mail)) {
echo "Error during sending E-Mail : ". $mail->getMessage();
}
?>
该脚本运行良好,所以我想测试这个示例的错误情况,并将smtp用户更改为无效的东西,并且它已经工作了......我收到了我的邮件。
这怎么可能?
问候
编辑: 我现在做了另一个测试,并将smtp服务器更改为无效...文档说必须有“PEAR_MAIL_SMTP_ERROR_CONNECT”错误...我得到以下输出: “fsockopen()[function.fsockopen]:无法连接到/usr/local/lib/php/Net/Socket.php中的 xx.xx.xx.xxx:25 (拒绝连接)第108行“
“可捕获的致命错误:无法将类PEAR_Error的对象转换为第222行的/usr/local/lib/php/Net/SMTP.php中的字符串”
当smtp名称无效时,此IP来自何处? 可以通过任何配置来取消服务器吗?
答案 0 :(得分:2)
这意味着SMTP服务器不验证登录数据。它可能根本不需要身份验证或支持SMPT-after-POP(顺便说一下,这是一个可怕的过时的东西),即如果您的IP在相应的POP3服务器上最近验证了SMTP服务器将不需要您进行身份验证。
尝试将服务器更改为可能始终需要身份验证的内容,例如gmail SMTP。