PHPMailer使用SMTP用户名作为发件人电子邮件地址

时间:2014-12-19 21:57:25

标签: php email phpmailer

所以我尝试使用当前版本的PHPMailer(https://github.com/PHPMailer/PHPMailer)发送电子邮件。 SMTP连接和邮件发送工作正常,但脚本没有使用" SetFrom"发件人邮件的$ email变量,而不是"用户名"电子邮件。

我尝试过使用多种形式设置" From"邮件似乎没什么用,但重要的是注意到" name"在" SetForm"设置得很好,但是"电子邮件"不是。

以下是代码:

    $mail = new PHPMailer;

    $mail->isSMTP();                                   
    $mail->Host = 'smtp.gmail.com';                     
    $mail->SMTPAuth = true;                            
    $mail->Username = 'USERNAME(MY EMAIL)';      
    $mail->Password = 'PASSWORD';                    
    $mail->SMTPSecure = 'tls';                        
    $mail->Port = 587;

    $mail->isHTML(true);

    $mail->SetFrom($email,$name);
    $mail->addAddress($email_received);                 

    $mail->Subject = $subject;
    $mail->Body = $user_msg;

2 个答案:

答案 0 :(得分:0)

这是一个常见问题,在这里多次询问。 gmail不允许您设置任意发件人 - 如果您通过gmail发送,则必须使用您的Gmail地址或预先配置的替代方案。有关此问题的Google官方文档,请参阅here。一般来说,尝试这样做是个坏主意,因为它可能会导致您的消息失败,而地址所有者可能已经配置了SPF测试。

答案 1 :(得分:0)

如果您检查收到的邮件的标题,您会发现SetFrom电子邮件ID定义为X-Google-Original-From

这是因为Gmail会自动将您通过其SMTP服务器发送的任何电子邮件的发件人行重写为Gmail或Google Apps电子邮件帐户设置中默认的“发送邮件为”电子邮件地址。

如果您确实希望将Gmail用作电子邮件提供商,则需要打开Goog​​le Apps帐户并验证您拥有用于电子邮件ID的域名。

此问题还有一种解决方法(但不推荐):

在Gmail设置中,转到“帐户”标签,然后在Send mail as部分添加您拥有的其他电子邮件地址。这将导致Google的SMTP服务器使用您启用的默认Send mail as地址重新编写“发件人”字段。在这里,您需要输入域的smtp设置。 因此,当您使用此设置发送电子邮件时,PHPMailer将连接到Gmail,Gmail将在发送任何电子邮件之前连接到您的SMTP服务器。