2012-05-25 116 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"; 
?>