所以我尝试使用当前版本的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;
答案 0 :(得分:0)
这是一个常见问题,在这里多次询问。 gmail不允许您设置任意发件人 - 如果您通过gmail发送,则必须使用您的Gmail地址或预先配置的替代方案。有关此问题的Google官方文档,请参阅here。一般来说,尝试这样做是个坏主意,因为它可能会导致您的消息失败,而地址所有者可能已经配置了SPF测试。
答案 1 :(得分:0)
如果您检查收到的邮件的标题,您会发现SetFrom
电子邮件ID定义为X-Google-Original-From
。
这是因为Gmail会自动将您通过其SMTP服务器发送的任何电子邮件的发件人行重写为Gmail或Google Apps电子邮件帐户设置中默认的“发送邮件为”电子邮件地址。
如果您确实希望将Gmail用作电子邮件提供商,则需要打开Google Apps帐户并验证您拥有用于电子邮件ID的域名。
此问题还有一种解决方法(但不推荐):
在Gmail设置中,转到“帐户”标签,然后在Send mail as
部分添加您拥有的其他电子邮件地址。这将导致Google的SMTP服务器使用您启用的默认Send mail as
地址重新编写“发件人”字段。在这里,您需要输入域的smtp设置。
因此,当您使用此设置发送电子邮件时,PHPMailer将连接到Gmail,Gmail将在发送任何电子邮件之前连接到您的SMTP服务器。