发送电子邮件时出现smtp错误:发件人地址必须包含域名

时间:2012-04-15 13:01:21

标签: php email smtp phpmailer

我在尝试发送电子邮件时遇到此错误

SMTP -> ERROR: MAIL not accepted from server: 501 : sender address must contain a domain 

它过去工作正常我不知道发生了什么 我使用php邮件但我不认为这很重要

   $smtp = setting::get_smtp( 1 , 'support');      

   $mail   = new PHPMailer(); 
   $mail->IsSMTP(); 
   $mail->Host       = $smtp->address;  //localhost
   $mail->CharSet    = "utf-8";                              
   $mail->SMTPAuth   = true;                 
   $mail->Port       = $smtp->port;    // 25                  
   $mail->Username   = $smtp->username; 
   $mail->Password   = $smtp->password;   
   $mail->From       =  $smtp->from ; // www.mysite.com
   $mail->AddReplyTo ($smtp->username , $smtp->from ); // noreply@mysite.com //www.mysite.com
   $mail->Subject    = $title;
   $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; 

       $mail->MsgHTML($msg);
       $mail->SMTPDebug = 1;
       if( filter_var( $admin_email , FILTER_VALIDATE_EMAIL ) == TRUE ){
       $mail->AddAddress($admin_email , "John Doe");
           $mail->Send();
       }

2 个答案:

答案 0 :(得分:4)

错误消息有点误导,但问题很明显。 From:标头必须包含域作为完整的电子邮件地址。如果您的$smtp->from包含www.mysite.com,这是一个无效的电子邮件地址,则会遗漏@之后的部分。邮件程序将您的域名误解为电子邮件地址的第一部分(用户部分),并抱怨它需要@domain。为您的$smtp->from媒体资源提供完整的发件人电子邮件地址。

 // Should be something like sender@example.com
 $mail->From       =  $smtp->from ; 

答案 1 :(得分:0)

不应该是$ mail->从设置为电子邮件地址?