我正在尝试使用PEAR Mail使用以下代码从我的Gmail地址发送
<?php
include("Mail.php");
echo "This test mail for authentication";
try{
$from_name = "Test";
$to_name = "from name";
$subject = "hai";
$mailmsg = "Happy morning";
$From = "From: ".$from_name." <frommail@gmail.com>";
$To = "To: ".$to_name." <tomail@gmail.com>";
$recipients = "tomail@gmail.com";
$headers["From"] = $From;
$headers["To"] = $To;
$headers["Subject"] = $subject;
$headers["Reply-To"] = "gunarsekar@gmail.com";
$headers["Content-Type"] = "text/plain";
$smtpinfo["host"] = "smtp.gmail.com";
$smtpinfo["port"] = "25";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = "mymail@gmail.com";
$smtpinfo["password"] = "mypassword";
//$smtpinfo["debug"]=True;
$mail_object =& Mail::factory("smtp", $smtpinfo);
$mail_object->send($recipients, $headers, $mailmsg);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
}catch(Exception $e){
echo 'Caught exception: ', $e->getMessage(), "\n";
}
echo "<br>Fin";
?>
此代码不会返回任何错误或警告,它只显示“消息已成功发送!” 但是,邮件不是收件人邮寄地址。
任何人都可以告诉mycode中的问题或实际发生的事情。
答案 0 :(得分:1)
我看到的第一件事是你有一个错误:你的检查检查了一个名为$mail
的变量,但其他一切都引用了$mail_object
。如果那是在你的实际代码中,那么我猜这可能是它的一部分。
一些基本检查:
smtp.gmail.com
或使用telnet打开与端口25的连接,确认您甚至可以与GMail服务器通信(由于某种原因未被阻止):telnet smtp.gmail.com 25
除此之外,它looks like GMail requires TLS or SSL,这意味着您必须使用端口587
或端口465
。不过,我不知道该软件包是否可以处理加密连接。 (即使在端口25
上,GMail也需要SSL加密。)这可能会使其无法正常工作。