在不同的服务器上拆分电子邮件和Web:通过PHP向该域中的电子邮件发送电子邮件


Email and Web split on different servers: Send email via PHP to an email on that domain

1在DNS上port80和MX分开的域:

  • 网站托管在VPS上
  • 电子邮件托管在共享主机上。

当我在网站上调用PHP中的mail()函数时,该函数的地址是域上的电子邮件,电子邮件被本地传递到VPS而不是共享服务器。

在PHP运行的web主机VPS使用域名MyDomain.com:

$headers = "From: MyName <name1@MyDomain.com>'r'n";
$headers .="Return-Path:<name1@MyDomain.com>'r'n";
mail( "name2@MyDomain.com", "Header", "Content", $headers);

如何强制mail()为域做MX查找?如何将邮件发送到共享主机而不是VPS?

我试着这样做,但它没有工作:

ini_set("SMTP","123.456.789.012");

其中123.456.789.012为共享主机的ip。

共享主机为hostmonster。是否有一种方法来指定使用ip和用户名的电子邮箱?name2 ~ username@123.456.789.012

删除mail()函数,使用PHPMailer。它更灵活,是面向对象的,更容易配置SMTP,并有更好的附件支持(如果你需要的话)。

要在phpmailer中发送电子邮件,您只需要这样设置您的SMTP:

$mailer = new PHPMailer();
$mailer->Mailer = 'smtp';
$mailer->Host = '123.456.789.012';
$mailer->From = 'me@myself.com';
$mailer->FromName = 'Me Myself';
$mailer->AddAddress = 'someRecipient@whatever.com';
$mailer->Subject = 'My subject line';
$mailer->Body = 'Your Body text here, in HTML if you set $mailer->IsHtml(true)';
$mailer->Send();

问题是您的VPS服务器配置为处理您的域的邮件。相应地调整您的邮件配置。此外,Linux会忽略SMTP设置。只有Windows使用这个

或者,您可以使用PHPMailer之类的类,它可以直接连接到远程SMTP服务器。