我尝试通过本地的smtp服务器(使用PEAR邮件)从php发送邮件。我有一条成功消息,但该消息未发送。我认为问题出在我的服务器上。即使我使用Telenet测试,我也不会出错。这是我的php代码的摘录:
require_once "Mail.php";
$from = "<hotline.cfao@test.com>";
$to = "<pessokho@gmail.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
$host = "10.68.153.137";
$port = "25";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
当我调用此脚本时,我收到“消息已成功发送!”。在我的邮箱中检查时,我什么也没得到。
答案 0 :(得分:0)
您必须分享有关您的问题的更多详细信息,实际上,当您看到发送消息成功时,这意味着您的电子邮件服务器已经完成了工作,但是它可能在您身边或您的互联网提供商(ISP)的传出端口正在阻止smtp电子邮件端口< / p>
检查出站端口是否可访问,SMPT 25:
键入以下命令:
telnet example.com 25
查看结果:
如果未阻止端口25,您将获得成功的220响应(文本可能会有所不同)。
Trying 64.13.192.208...
Connected to example.com.
Escape character is '^]'.
220 example.com ESMTP Exim 4.63 Sat, 07 Sep 2019 20:40:01 -0400
如果端口25被阻止,您将得到连接错误或根本没有响应。
Trying 150.13.192.200...
telnet: connect to address 150.13.192.200: Connection refused
telnet: Unable to connect to remote host
如果其关闭(由于发送垃圾邮件问题,通常在ISP的60%中关闭了),则可以通过某种方式对其进行修复
1-更改您的isp
2-将其他电子邮件服务器用作SMTP中继
3-使用VPN
4-使用加密端口587