我有一个联系表单,用户输入他/她的详细信息,包括他/她的电子邮件,下面的代码效果很好
$mail = new PHPMailer();
$body = $message;
$mail->IsHTML(true);
$mail->SMTPAuth = true;
$mail->Host = "smtp.bizmail.yahoo.com";
$mail->Port = 587;
$mail->Username = "name@domainname.net";
$mail->ContentType ='text/html';
$mail->Password = "password";
$mail->SMTPSecure = 'tls';
$mail->SetFrom('name@domainname.net', 'my name',false);
$mail->Subject = $subject;
$mail->MsgHTML($body);
$mail->IsSMTP();
$address = $to;
$mail->AddAddress($address, $name);
if(!$mail->Send()) {
return 0;
} else {
return 1;
}
此代码发送邮件和标题“From:name@domainname.net”,但我想显示用户从联系表单输入的电子邮件。例如,用户输入myenquiry@anotherdomain.com,我希望来自邮件的是“From:myenquiry@anotherdomain.com”,其中另一个域不在我的域中(即雅虎小企业)
答案 0 :(得分:2)
不要那样做。这是伪造来自地址的,它通常会导致您的消息无法传递,因为它们将无法通过SPF检查。对于雅虎来说尤其如此,雅虎是迄今为止最挑剔的ISP。将您自己的地址放在From
中(正如您现在所做的那样),并在reply-to
中添加提交者的地址(请参阅PHPMailer中的addReplyTo()
)。
此外,您的代码基于旧示例,因此请确保您使用的是最新示例the latest PHPMailer。