使用PHP发送电子邮件失败

时间:2012-05-25 13:55:58

标签: php email spf

情况: 我们的客户(domain.com的所有者)已将www.domain.com的A记录设置为我们运行domain.com后面网站的服务器的IP地址。我们只为这个域提供托管服务,他们有自己的电子邮件服务器。

这意味着domain.com拥有另一个IP而不是domain.com的邮件服务器。

问题: 从PHP发送邮件到foo@bar.com但是发送邮件到*@domain.com不起作用。

问题: 这与SPF记录有关吗? 我该如何解决这个问题?

THX

邦迪

3 个答案:

答案 0 :(得分:1)

在共享主机上发生这种情况,也可能是因为在Web服务器上有一个本地传送机制,即当您的Web服务器看到@ domain.com的电子邮件时,它认为它将是一个处理,而不是传递给实际的邮件服务器。

进入您的网络服务器面板(Cpanel或其他)并检查此域的电子邮件设置。确保domain.com

禁用“本地传送”或类似内容

答案 1 :(得分:0)

您的主domain.com(没有www。)是否有CNAME记录?这将自动将域的mx记录引用到cname记录。

  

MX记录的特征有效载荷信息是完全的   邮件主机的限定域名和首选项值。主人   name必须直接映射到一个或多个地址记录(A或AAAA)   DNS,不得指向任何CNAME记录。

http://en.wikipedia.org/wiki/MX_record#cite_note-0

答案 2 :(得分:0)

发送电子邮件的最佳方式是使用smtp方法:

http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php4/0.90/

示例文件:

<?php
require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();                                      // set mailer to use SMTP
$mail->Host = "mail.example.net";  // specify main and backup server
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "user@example.net";  // SMTP username
$mail->Password = "password"; // SMTP password

$mail->From = "example@example.net";
$mail->FromName = "Mailer";
$mail->AddAddress("destiny@example.net");


//$mail->AddReplyTo("info@example.com", "Information");

$mail->WordWrap = 50;                                 // set word wrap to 50 characters
//$mail->AddAttachment("/var/tmp/file.tar.gz");         // add attachments
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");    // optional name
$mail->IsHTML(true);                                  // set email format to HTML

$mail->Subject = "Here is the subject";
$mail->Body    = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
    echo "Message could not be sent. <p>";
    echo "Mailer Error: " . $mail->ErrorInfo;
    exit;
}

echo "Message has been sent";
?>