如何根据wp_mail()的表单输入电子邮件地址设置From地址?

时间:2014-09-03 作者:Riffaz Starr

我正在尝试创建表单并使用wp\\U mail将其发送到我的电子邮件地址。我的wp\\u mail()代码是:

if($_POST["submit"]) {
    $to="my email";
    $subject ="My subject";     
    $sender=$_POST["sendername"];
    $senderEmail=$_POST["senderEmail"];
    $message=$_POST["message"];
    $name_title=$_POST["name_title"];   

    $mailBody = "<b><span style=\'color: red;\'>Name:</span></b> $name_title $sender\\n<br/>
                 <b>Email:</span></b> $senderEmail\\n\\n<br/><br/>
                 <b>Message:</b> $message";

    $mail_sent = wp_mail( $to, $subject, $mailBody );
    }
为了更改发件人地址,我在函数中添加了以下过滤器。php

/* adding support for html emails*/
add_filter( \'wp_mail_content_type\',\'wpse27856_set_content_type\' );
function wpse27856_set_content_type(){
    return "text/html";
}

/* from address */
add_filter( \'wp_mail_from\', \'my_mail_from\' );
function my_mail_from( $email )
{
    return $senderEmail;
}

/* from name*/
add_filter( \'wp_mail_from_name\', \'my_mail_from_name\' );
function my_mail_from_name( $name )
{
    return $sender;
}
HTML格式为:

<form id="" name="" action="<?php echo get_permalink(); ?>" method="post">
<div class="form-input">
    <select name="name_title" class="name-title-input">
    <option value="" selected="selected">Select Title</option>
    <option value="Mr">Mr</option>
</div>
<div class="label-input-wrapper">
        <div class="form-label">Name</div><div class="form-input"><input type="text" name="sendername"/></div>
    </div>

    <div class="label-input-wrapper">
        <div class="form-label">E-Mail</div><div class="form-input"><input type="email" name="senderEmail" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$" required /></div>
    </div>
    <input type="submit" value="Submit" name="submit">
</form> 
它没有将邮件表单发送到我的电子邮件。但如果我按以下方式更改过滤器,它会将表单发送到我的电子邮件:

/* from address */
add_filter( \'wp_mail_from\', \'my_mail_from\' );
function my_mail_from( $email )
{
    return "[email protected]";
}

/* from name*/
add_filter( \'wp_mail_from_name\', \'my_mail_from_name\' );
function my_mail_from_name( $name )
{
    return "my name";
}
那么,如何才能从邮件头获取发件人的电子邮件呢?

2 个回复
最合适的回答,由SO网友:Chris Morris 整理而成

如果我没听错的话,你只是在拍摄现场遇到了麻烦?最简单的方法就是添加fromemail headerswp_mail 作用

下面是我的一个旧的简单电子邮件发送功能的示例:

function contact_send() {
    $title   = \'New message Received\';
    $headers = array(\'From: \'.$_POST[\'full_name\'].\' <\'.$_POST[\'email_address\'].\'>\');
    $message = \'<h1>My message</h1>\';

    //Send the email
    add_filter(\'wp_mail_content_type\', create_function(\'\', \'return "text/html"; \'));
    $email = wp_mail(\'[email protected]\', $title, $message, $headers);
    remove_filter(\'wp_mail_content_type\', \'set_html_content_type\');

    return $email;
}
Thewp_mail_from hook提供您在wp_mail 函数,您没有设置一个,因此它接收到的是空的,并发送回一个空变量($未定义senderEmail,因此将返回未定义的)。

SO网友:Yogesh Shakya

为此,请过滤电子邮件地址:

add_filter( \'wp_mail_from_name\', \'my_mail_from_name\' );
function my_mail_from_name( $name ) {
    return "My Name";
}
现在为电子邮件地址的名称添加筛选器:

add_filter( \'wp_mail_from\', \'my_mail_from\' );
function my_mail_from( $email ) {
    return "change-this-to-your-email-address";
}
进入您的function.php.

结束

相关推荐

在使用GravityForms上传工具时,如何通过函数更改图片的作者?

我想知道是否有办法手动更改图像的作者。我使用的Gravity表单将帖子作者设置为当前用户,但不会将他们设置为上传图像的作者。我想可能有一种方法可以添加一个函数,该函数可以查找当前用户,然后设置他们上传给该用户的图像的作者。