4

我正在尝试使用 PEAR Mail 包和 SMTP 在 PHP 中发送电子邮件,但我不断收到错误消息SMTP: Failed to connect socket: Connection Refused

我对 SMTP 的工作原理一无所知,所以请耐心等待。

这是我的代码:

$recipients = $_SESSION['email'];
$headers["From"] = "example@example.com";
$headers["To"] = "example@example.com";
$headers["Subject"] = 'Subject Text!';
$mailmsg = $_SESSION['body'];

/* SMTP server name, port, user/password */
$smtpinfo["host"] = "mail.example.com";
$smtpinfo["port"] = "587";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = $email_user;
$smtpinfo["password"] = $email_pass;
/* Create the mail object using the Mail::factory method */
$mail_object =& Mail::factory("smtp", $smtpinfo);
/* Ok send mail */
$send = $mail_object->send($recipients, $headers, $mailmsg);
if (PEAR::isError($send)) {
    echo '<p>Error: ' . $send->getMessage() . '</p>';
} else {
    header('Location: ../../emailed.php');
}

我所知道的是:

域是 hostgator,电子邮件处理程序是 Keiro Connect。

我不确定要通过哪个端口。我查看了服务,它说侦听 IP 地址是:

  • SMTP:所有地址:25,所有地址:587
  • 安全 SMTP:所有地址:465
  • SMTP 提交:所有地址:587 *虽然此服务已关闭

我还注意到 SMTP 传递设置为使用 DNS MX 记录直接传递。我不知道这是否意味着什么。

我究竟做错了什么?我应该寻找什么才能按顺序获取所有参数?任何帮助将不胜感激。

4

3 回答 3

4

仅仅因为您正在侦听端口并不意味着您可以访问它。系统或上游内联设备上的防火墙可能会阻止它。

从您正在运行脚本的本地机器上,您是否会收到telnet mail.example.com 587提示?

于 2012-06-26T16:32:20.480 回答
0

如果您没有 ssl 认证,我建议使用端口 25。获得 ssl 后,我会将端口配置更改为 465。您为什么使用该端口号?我认为它不符合hostgator。从 hostgator 查看此网页。http://support.hostgator.com/articles/email-connection-settings

于 2018-01-16T20:36:14.013 回答
0

我以前遇到过这样的问题.. 并且用尽了我的时间来解决...
在服务器上尝试您的脚本.. 有时对于某些 SMTP 主机,您无法从本地计算机发送电子邮件
我添加答案(或建议)为时已晚..但这可能对某人有所帮助..

于 2016-05-26T08:12:45.160 回答