首页 文章

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

提问于
浏览
0

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

我尝试使用多种形式设置“发件人”邮件,似乎没有任何工作,但重要的是要注意“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

    这是一个常见问题,在这里多次询问 . gmail不允许您设置任意发件人 - 如果您通过gmail发送,则必须使用您的Gmail地址或预先配置的替代方案 . 请参阅here for google 's docs on the matter. Generally it'无论如何都要尝试这样做,因为它可能会导致您的消息失败,而地址所有者可能已经配置了SPF测试 .

  • 0

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

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

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

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

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

相关问题