【问题标题】:Reply to sender phpmailer回复发件人 phpmailer
【发布时间】:2017-11-24 23:02:17
【问题描述】:

我可以将电子邮件发送到我的邮箱,但发件人始终是我自己的电子邮件地址,我希望发件人是填写联系表的人的实际电子邮件,所以我可以直接回复。

<?php

require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer();
function SendMail($to, $from, $body, $mail)
{
$mail->SMTPOptions = array(
'ssl' => array(
    'verify_peer' => false,
    'verify_peer_name' => false,
    'allow_self_signed' => true
)
);
$mail->isSMTP();

$mail->Host = "smtp.office365.com";
$mail->Port = "587";
$mail->Username = "MY EMAIL ADDRESS HERE";
$mail->Password = "MY PASSWORD";
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
// Send the mail

$mail->From = "MY EMAIL ADDRESS HERE";
$mail->setFrom($from, "Contact Form Request");
$mail->AddAddress("MY EMAIL ADDRESS HERE", "Mick");
$mail->Subject = "Contact Form Request";
$mail->Body = $body;

if($mail->send())
{
    return true;
}else{
  var_dump($mail->ErrorInfo);
  die();
  return false;
}

}

if ($_POST["submit"]) {

$userDetails = array(
"sender" => $_POST['name'],
"senderEmail" => $_POST['email'],
"phone"       => $_POST['phone'],
"address1"    => $_POST['address1'],
"address2"    => $_POST['address2'],
"address3"    => $_POST['address3'],
"postcode"    => $_POST['postcode'],
"skipsize"    => $_POST['skipsize'],
"delivery"    => $_POST['delivery'],
"message"     => $_POST['message'],
"pickup"      => $_POST['pickup'],
);


$mailBody .= "Name: $userDetails[sender] \n";
$mailBody .= "Email: $userDetails[senderEmail] \n";
$mailBody .= "Phone Number: $userDetails[phone] \n";
$mailBody .= "Address: $userDetails[address1], $userDetails[address2], $userDetails[address3], $userDetails[$postcode] \n";
$mailBody .= "Phone Number: $userDetails[phone] \n";
$mailBody .= "Skip Size Wanted: $userDetails[skipsize] \n";
$mailBody .= "Delivery Date Wanted: $userDetails[delivery] \n";
$mailBody .= "Pick Up Date Wanted: $userDetails[pickup] \n";
$mailBody .= "Message: $userDetails[message] \n";

if(SendMail("stuart@foamymedia.com", $from, $mailBody, $mail))
{
    $thankYou="<p class='thankyou'>Thank you! Your message has been sent.</p>";

}else{

}

}

?>

我错过了什么?因为它一直困扰着我,没有直接在线的答案。

帮助会很大

【问题讨论】:

  • 让访问者填写表格,输入他们的电子邮件地址并将其更改为$mail-&gt;From = $_POST['email'];?不应该那么难..当然我会先验证它。
  • 不,不要那样做;它行不通。 PHPMailer 自动验证地址。看我的回答。

标签: php email phpmailer


【解决方案1】:

你真的不想这样做!它是伪造的,会导致 SPF 检查失败,从而导致您的邮件被退回或过滤掉垃圾邮件。

这样做:

$mail->From = "MY EMAIL ADDRESS HERE";
$mail->From = "MY NAME HERE";
if (!$mail->addReplyTo($_POST['email'])) {
    die('Invalid email address');
}

您使用的是旧版本的 PHPMailer - Get the latest

另外,不要禁用 TLS 证书验证。 Office365 提供无效证书 - 如果它失败是由其他一些问题引起的,例如您的 SMTP 流量被您的 ISP 拦截和重定向,这很常见。找出为什么它失败并使用您的 ISP 提供的发送机制 - 这可能会阻止您使用您的 Office365 地址,原因与您无法伪造提交者的发件人地址相同。

所有这些都在the contact form example provided with PHPMailer 中进行了演示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2013-06-29
    相关资源
    最近更新 更多