接收电子邮件时,PHPMailer在地址错误

时间:2017-03-17 20:54:54

标签: php email smtp gmail phpmailer

我遇到此问题,当我收到从本地主机网站发送的电子邮件时,我收到错误的发件人部分电子邮件地址($ mail-&gt ; SetFrom($ email,$ name))。 我将自己的电子邮件地址作为发件人,而不是我网站上文本框中输入的电子邮件地址。

我到处寻找一些答案,遗憾的是没有任何效果。我尝试过使用Chrome帐户设置并将不太安全的应用设置为开启。那没用。

我尝试了多种设置SetFrom电子邮件和名称的方法。需要帮助!

   Question Value Key
0   Q008D02 1   Text 1
1   Q008D02 2   Text 2
2   Q008D02 3   Text 3
3   Q008D02 4   Text 4
4   Q008D03 1   Answer1
5   Q008D03 2   Answer2
6   Q008D03 3   Answer3
7   Q008D03 4   Answer4,Answer5
8   Q008D04 1   Check1
9   Q008D04 2   Check2,Check3
10  Q008D04 3   Check4
11  Q008D04 4   Check5,Check6,Check7

这是我设置的警报,显示发送到我的PHP脚本的所有POST参数。所有POST变量都在那里。 唯一的问题是SetFrom($ email,$ name)

Javascript Alert with POST Parameters

1 个答案:

答案 0 :(得分:1)

Gmail不允许您从地址设置任意内容,但您可以定义预设别名。

但是,无论如何,你都不应该尝试这样做。将用户提供的值放在发件人地址是一个非常糟糕的主意,因为您的邮件将因SPF检查而失败,因为它是伪造的。将您自己的地址放在发件人地址(以及地址)中,并使用addReplyTo()方法将提交者的地址放入回复标题中。您可以在PHPMailer提供的联系表单示例中看到这个:

//Use a fixed address in your own domain as the from address
//**DO NOT** use the submitter's address here as it will be forgery
//and will cause your messages to fail SPF checks
$mail->setFrom('from@example.com', 'First Last');
//Send the message to yourself, or whoever should receive contact for submissions
$mail->addAddress('whoto@example.com', 'John Doe');
//Put the submitter's address in a reply-to header
//This will fail if the address provided is invalid,
//in which case we should ignore the whole request
if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
...