邮件不是在php pear邮件包中发送的

时间:2011-08-15 05:10:50

标签: php pear

我正在尝试使用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中的问题或实际发生的事情。

1 个答案:

答案 0 :(得分:1)

我看到的第一件事是你有一个错误:你的检查检查了一个名为$mail的变量,但其他一切都引用了$mail_object。如果那是在你的实际代码中,那么我猜这可能是它的一部分。

一些基本检查:

  • 您是否检查过以确保在Gmail中启用了POP或IMAP?
  • 您是否在普通计算机上使用相同的用户名和密码设置此帐户,以确保您可以在PHP之外发送和接收电子邮件?
  • 通过ping smtp.gmail.com或使用telnet打开与端口25的连接,确认您甚至可以与GMail服务器通信(由于某种原因未被阻止):telnet smtp.gmail.com 25
  • Read over the Gmail help for sending email.

除此之外,它looks like GMail requires TLS or SSL,这意味着您必须使用端口587或端口465。不过,我不知道该软件包是否可以处理加密连接。 (即使在端口25上,GMail也需要SSL加密。)这可能会使其无法正常工作。