如何发送带有wp_mail()的电子邮件,其中的电子邮件来自联系人表单,而不是主机?

时间:2016-05-26 作者:IAmMilinPatel

我已经这样建立了SMTL,

add_action( "phpmailer_init", "send_smtp_email" );
function send_smtp_email( $phpmailer ) {
ini_set("sendmail_from","[email protected]");
ini_set("sendmail_path","[email protected]");
    // Define that we are sending with SMTP
    $phpmailer->isSMTP();
    // The hostname of the mail server
    $phpmailer->Host = "localhost";
    // Use SMTP authentication (true|false)
    $phpmailer->SMTPAuth = false;
    // SMTP port number - likely to be 25, 465 or 587
    $phpmailer->Port = "25";
    // Encryption system to use - ssl or tls
    $phpmailer->SMTPSecure = "tls";

    $phpmailer->From = "[email protected]";
    $phpmailer->FromName = "XYZ";
    }
并为我的联系人表单添加了以下代码以发送电子邮件。

$headers = array(\'MIME-Version: 1.0\'.\'From: \'.$_POST[\'namee\'].\'<\'.$_POST[\'email\'].\'>\'.\'Reply-To: \'.$_POST[\'email\']);
$comment = $comment . "\\r\\n" . "\\r\\nIP Address: " . $id . "\\r\\nUser Agent: " . $browser . "\\r\\nReferrer: " . $referrer;
wp_mail($to,$website,$comment,$headers);
但是,它既没有正确设置邮件头,也没有将发件人地址作为联系人表单中的地址发送电子邮件。

我收到电子邮件,但这些电子邮件中的发件人地址是主机服务器的地址。

我希望从联系人表单中获取的电子邮件地址应设置为电子邮件中的发件人地址。

我知道有一些钩子可以替换管理员电子邮件和名称,但是,这会替换站点管理员电子邮件地址和名称,并变得静态。我希望用户在联系人表单中输入的电子邮件地址应该是正在发送的电子邮件中的发件人地址。

我该怎么做?有人知道吗?

1 个回复
SO网友:TomC

您不需要在代码中将发件人名称和电子邮件传递给PHPMailer,因为它将从$headers 因此,请尝试以下操作:

add_action( "phpmailer_init", "send_smtp_email" );
function send_smtp_email( $phpmailer ) {
// ini_set("sendmail_from","[email protected]");
// ini_set("sendmail_path","[email protected]");
    // Define that we are sending with SMTP
    $phpmailer->isSMTP();
    // The hostname of the mail server
    $phpmailer->Host = "localhost";
    // Use SMTP authentication (true|false)
    $phpmailer->SMTPAuth = false;
    // SMTP port number - likely to be 25, 465 or 587
    $phpmailer->Port = "25";
    // Encryption system to use - ssl or tls
    $phpmailer->SMTPSecure = "tls";

    // $phpmailer->From = "[email protected]";
    // $phpmailer->FromName = "XYZ";
    }
此外,请仔细检查表单字段名称:$_POST[\'namee\']