繁体   English   中英

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

[英]PHPMailer using SMTP username as senders email address

因此,我正在尝试使用当前版本的PHPMailer( https://github.com/PHPMailer/PHPMailer )发送电子邮件。 SMTP连接和邮件发送正常,但脚本未对发件人邮件使用“ SetFrom” $ email变量,而是对“用户名”电子邮件使用。

我尝试使用多种形式设置“发件人”邮件,但似乎没有任何效果,尽管要注意的是,“ SetForm”中的“名称”设置得很好,而“ email”却没有。

这是代码:

    $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;

这是一个常见的问题,在这里多次询问。 gmail不允许您设置任意发件人-如果您通过gmail发送,则必须使用gmail地址或预先配置的备用地址。 有关此问题的Google文档,请参见此处 通常,无论如何尝试这样做是一个坏主意,因为它很可能导致您的邮件无法通过地址所有者可能已配置的SPF测试。

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

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

如果您确实想使用Gmail作为电子邮件提供商,则需要打开一个Google Apps帐户并确认您拥有用于电子邮件ID的域。

也有针对此问题的解决方法(但不建议这样做):

在您的Gmail设置中,转到“帐户”标签,然后在“ Send mail as部分中添加您拥有的另一个电子邮件地址。 这将导致谷歌的SMTP服务器重新写的从你启用任何地址作为缺省的字段Send mail as地址。 在这里,您需要输入域的smtp设置。 因此,当您使用此设置发送电子邮件时,PHPMailer将连接到Gmail,而Gmail将连接到您的SMTP服务器,然后再发送任何电子邮件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM