2012-05-25 189 views
0

情况: 我们的客户(domain.com的所有者)已将www.domain.com的A记录设置为我们在域名后面运行网站的其中一台服务器的IP地址。 COM。我们只提供这个域的主机,他们有他们自己的电子邮件服务器。用PHP发送电子邮件失败

这意味着domain.com有另一个IP比邮件服务器domain.com。

问题: 从PHP发送邮件到[email protected]工作,但发送邮件到*@domain.com不起作用。

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

THX

邦迪

回答

1

这发生在我的共享主机上也可能是因为网络上存在本地交付机制服务器,即当你的网络服务器看到@ domain.com的电子邮件时,它假定它将是一个处理的邮件,并且不会传递给实际的邮件服务器。

进入您的web服务器的面板(无论交友或),并检查您的电子邮件设置此域。确保“本地传递”或类似的东西是为domain.com

+0

这个伎俩!只需在我的cPanel中添加相同的DNS记录,并开始工作。谢谢! – Bundy

0

贵主domain.com(加www。)有一个CNAME记录?这将自动将域的mx记录引用到cname记录。

MX记录的特征有效负载信息是完整的 邮件主机的合格域名和首选项值。主机 名必须直接映射到 一个或多个地址记录(A或AAAA)的DNS,而不能指向任何CNAME记录。

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

+0

禁用这可能是一个愚蠢的问题,但PHP脚本是在服务器上.....有没有运行任何邮件守护程序(sendmail的,后缀,等等...)? – pogeybait

+0

@Arend:是的我的主域名有一个CNAME记录。这是一个问题吗? – Bundy

+0

@pogeybait:我不知道,为什么呢? – Bundy

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 = "[email protected]"; // SMTP username 
$mail->Password = "password"; // SMTP password 

$mail->From = "[email protected]"; 
$mail->FromName = "Mailer"; 
$mail->AddAddress("[email protected]"); 


//$mail->AddReplyTo("[email protected]", "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"; 
?> 
相关问题