在Windows上使用PHP通过中继发送邮件

时间:2014-11-09 17:52:14

标签: windows phpmailer mailgun emailrelay

我正在使用PHPMailer(通过SMTP)通过我的网站发送电子邮件。我正在使用Windows 2012服务器作为我使用Hmailserver的邮件服务器。我正在使用Mailgun来转发我的电子邮件。

我做过的事情:

  • 我已经设置并验证了我的邮件设置。
  • 我已经通过服务器测试发送和接收电子邮件没有中继(工作正常)。

我的困境:

  • 在一个阶段,我将不得不说明中继信息,例如身份验证或主机名。到目前为止,我看到两个地方我可以宣布这一点 - 见下文:

1)通过PHPMailer脚本指定:

$mail->IsSMTP();
$mail->host = "smtp.mailgun.org";
$mail->Username = "username";
$mail->Password = "password";

2)在hmailserver admin中指定(在服务器上):

http://puu.sh/cJLpk/c3d548981c.png

如果我想传递所有电子邮件,我会以哪种方式执行此操作?

1 个答案:

答案 0 :(得分:2)

使用本地邮件服务器(hmailserver)作为中继将更快(至少对于您的客户端脚本)并且更加可靠。它应配置为指向mailgun,就像在屏幕截图中一样。 Mailgun应该为您提供可用于验证中继的凭据。

使用PHPMailer发送时,应将其配置为指向localhost,如下所示:

$mail->IsSMTP();
$mail->Host = 'localhost';
$mail->Username = "username";
$mail->Password = "password";

(您可能不需要本地服务器的用户名和密码)。虽然听起来很奇怪,但使用SMTP到localhost通常比调用本地sendmail二进制文件(或使用PHP的mail()函数)更快。

在您的原始代码中,您有host而不是Host - PHP对于属性名称来说是个案,因此如果这是您真正的代码,那么就会失败。

这应该就是它的全部内容。

唯一的另一个复杂因素是,如果hmailserver也发送了不应该通过mailgun的消息,那么你需要进一步了解你的hmailserver配置。