Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows上使用PHP通过中继发送邮件_Windows_Phpmailer_Mailgun_Emailrelay - Fatal编程技术网

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

在Windows上使用PHP通过中继发送邮件,windows,phpmailer,mailgun,emailrelay,Windows,Phpmailer,Mailgun,Emailrelay,我使用PHPMailer(通过SMTP)通过我的网站发送电子邮件。我正在使用windows 2012服务器作为我的邮件服务器,该服务器正在使用Hmailserver。我正在用邮枪传递我的电子邮件 我所做的事情: 我已经设置并验证了我的邮枪设置 我已经测试过在没有中继的情况下通过服务器发送和接收电子邮件(工作正常) 我的困境: 在某个阶段,我必须声明中继信息,例如身份验证或主机名。到目前为止,我看到了两个可以声明这一点的地方——见下文: 1) 通过PHPMailer脚本指定: $mail-

我使用PHPMailer(通过SMTP)通过我的网站发送电子邮件。我正在使用windows 2012服务器作为我的邮件服务器,该服务器正在使用Hmailserver。我正在用邮枪传递我的电子邮件

我所做的事情:

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

  • 在某个阶段,我必须声明中继信息,例如身份验证或主机名。到目前为止,我看到了两个可以声明这一点的地方——见下文:
1) 通过PHPMailer脚本指定:

$mail->IsSMTP();
$mail->host = "smtp.mailgun.org";
$mail->Username = "username";
$mail->Password = "password";
2) 在hmailserver admin(服务器上)中指定:


如果我想中继我所有的电子邮件,我该怎么做?

使用您的本地邮件服务器(hmailserver)作为中继将更快(至少对于您的客户端脚本而言)而且更可靠。它应该配置为指向邮枪,如屏幕截图所示。Mailgun应向您提供可用于认证中继的凭据

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

$mail->IsSMTP();
$mail->Host = 'localhost';
$mail->Username = "username";
$mail->Password = "password";
(本地服务器可能不需要用户名和密码)。尽管听起来有些奇怪,但使用SMTP到localhost通常比调用本地sendmail二进制文件(或使用PHP的
mail()
函数)要快

在您的原始代码中,您使用了
host
而不是
host
——PHP是属性名称的case-senetive,因此如果这是您的真实代码,则可能会失败

这应该是全部


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

谢谢,这应该是我所需要的!