【发布时间】:2016-11-03 21:45:38
【问题描述】:
使用 phpmailer 发送邮件。但它在 from(Email) 中显示了我的用户名。我必须显示发件人电子邮件 ID。请给我解决方案。
联系提交.php
<?php
require('phpmailer/class.phpmailer.php');
require('phpmailer/class.smtp.php');
$txtname = $_POST['txtname'];
$txtemail = $_POST['txtemail'];
$txtmobile = $_POST['txtmobile'];
$txtmessage = $_POST['txtmessage'];
$txtname = $_POST['txtname'];
$mail = new PHPMailer();
$mail->IsSMTP();// enable SMTP
$mail->SMTPDebug = 0;// debugging: 1 = errors and messages display after success message, 2 = messages only
$mail->SMTPAuth = TRUE;// authentication enabled
$mail->SMTPSecure = "ssl";// secure transfer enabled REQUIRED for Gmail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->IsHTML(true);
$mail->Username = "ashishaware2@gmail.com";
$mail->Password = "Ashish2";
$mail->Mailer = "smtp";
$mail->SetFrom("abcd@gmail.com",$txtname);
$mail->AddReplyTo($txtemail, $txtname);
$mail->AddAddress("ashishaware2@gmail.com");
$mail->Subject = "Test email using PHP mailer";
$mail->WordWrap = 80;
$content =" <b> NAME :</b> $txtname "."<br>";
$content.=" <b> EMAIL :</b> $txtemail "."<br>";
$content.=" <b> MOBILE :</b>$txtmobile "."<br>";
$content.=" <b> MESSAGE :</b>$txtmessage "."<br>";
$mail->MsgHTML($content);
if(!$mail->Send())
echo "Problem sending email.". $mail->ErrorInfo;
else
echo "email sent.";
?>
邮件发送后的结果是这样的:
结果
virat <ashishaware2@gmail.com>
To ashishaware2@gmail.com
Today at 18:13
NAME : virat
EMAIL : virat2830@gmail.com
MOBILE :9850971456
MESSAGE :hi
我的预期结果是
virat <virat2830@gmail.com>
To ashishaware2@gmail.com
Today at 18:13
NAME : virat
EMAIL : virat2830@gmail.com
MOBILE :9850971456
MESSAGE :hi
【问题讨论】:
-
$mail->SetFrom($txtemail, $txtname);应该这样做 -
@Fred-ii- 我认为 OP 希望第 1 行的 pac-mans
<email@email.com>之间的电子邮件不是他的身份验证电子邮件:/ -
我认为这里真正的问题是,如果您通过 Gmail SMTP 发送电子邮件,由于垃圾邮件/安全性,Gmail 可能不允许您更改电子邮件中的 FROM 标头。
-
恕我直言,您不应该伪造 From 标头。将所有相关数据放在消息正文中。使用纯文本、键值对的一致格式并包括完整的日期/时间。使自动数据提取更容易。