我一直在尝试使用pear和php脚本发送邮件。我已经搜索了一天以上,还没有找到我的问题。当我在网站上运行此代码时,没有任何反应。它会快速加载然后停止。我运行了一些echo命令,我发现代码专门停在:
$mail = $smtp->send($to, $headers, $body);
就是这样。没有其他事情发生。我没有得到任何错误输入或任何东西,我只是看到我的回声发生在此之前,之后没有回声。我安装梨,以及梨邮件。我认为'我正确安装它们,因为我可以在任何地方输入“pear”到命令行,它会调出菜单。我通过我的路由器和防火墙打开了端口465,tcp。我在Windows XP机器上。我不知道错误日志在哪里可以查看是否有任何不良情况发生。我的服务器是apache 2.2,托管在这个Windows框中。
<?php
require_once "Mail.php";
$from = "user1@gmail.com";
$to = "user2@yahoo.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
$server = "ssl://smtp.gmail.com";
$username = "user1@gmail.com";
$password = "pass";
$headers = array (
"From" => $from,
"To" => $to,
"Subject" => $subject);
$smtp = Mail::factory("smtp",
array ("host" => $server,
"port" => 465,
"auth" => true,
"username" => $username,
"password" => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>
答案 0 :(得分:1)
Gota喜欢这些问题如何花费10个小时的工作并且如此简单。
所以当我配置PEAR时,我做得正确。我安装了包mail,mail_mime和net_socket。我尝试安装net_smtp,但它给了我随机错误“没有可用于包装梨的版本......”。我认为这意味着包已经安装,我无法用它做任何其他事情。我不确切地知道这件事是如何被窃听的,但实际上我的“C:\ Documents and Settings \ user \ Local Settings \ Temp”文件夹中生成了一个梨文件夹。我删除了名为pear的文件夹,然后成功运行'pear install net_smtp'。之后,我运行了我的PHP代码,一切都像魅力(能够通过gmail smtp服务器成功发送我的电子邮件)。
感谢您的帮助,我很高兴能够解决这个问题! :)
答案 1 :(得分:0)
您不需要前进端口,因为连接是出站的。可能是您的ISP阻止了连接。在出站端口25上常见,而不是在465上,但它发生了 无论如何,你的代码看起来很好。