Как получить электронное письмо отправителя с помощью wp mail()?


У меня есть такой простой следующий код:

<?php
//if "email" variable is filled out, send email
if (isset($_POST['email']))  {
    //Email information
    $to = get_option( 'admin_email' );
    $headers = $_POST['email'];
    $subject = $_POST['subject'];
    $message = $_POST['message'];

    //send email
    wp_mail($to, $subject, $message, $headers);

    //Email response
    echo "Thank you for contacting us!";
}

    //if "email" variable is not filled out, display the form
    else  {
?>
<form method="post">
    Email: <input name="email" type="text" /><br />
    Subject: <input name="subject" type="text" /><br />
    Message:<br />
    <textarea name="message" rows="15" cols="40"></textarea><br />
    <input type="submit" value="Submit" />
 </form>

<?php
  }
?>

Мой вопрос заключается в том, как получить электронное письмо отправителя вместо сгенерированного wp_mail() из заголовка $ wordpress@$sitename ?

Заранее спасибо за любую помощь.

Author: LebCit, 2017-02-03

2 answers

Я выучил дорогой (по времени) урок.
В следующий раз, когда я захочу установить контактную форму, я сначала проверю конкретную конфигурацию хост-серверов в отношении настроек электронной почты!
Благодаря Стиву Норту я понял, что мой хост не разрешает прямые пользовательские заголовки $ по соображениям безопасности...
Но, я думаю, что у каждого приличного хостера есть решения для своих клиентов.
Итак, если у вас дешевое имя (это мой случай), вы можете обратиться к этому статья Как настроить контактную форму, размещенную у нас

Надеюсь, что это поможет другим. СЯ:)

 0
Author: LebCit, 2017-04-13 12:37:35

Вы не задаете адрес отправителя.

Вы можете сделать следующее:

<?php
//if "email" variable is filled out, send email
if (isset($_POST['email']))  {
    //Email information
    $to = get_option( 'admin_email' );
    $headers = array('From: Me Myself <'.$_POST['email'].'>'); //updated
    $subject = $_POST['subject'];
    $message = $_POST['message'];

    //send email
    wp_mail($to, $subject, $message, $headers);

    //Email response
    echo "Thank you for contacting us!";
}

    //if "email" variable is not filled out, display the form
    else  {
?>
<form method="post">
    Email: <input name="email" type="text" /><br />
    Subject: <input name="subject" type="text" /><br />
    Message:<br />
    <textarea name="message" rows="15" cols="40"></textarea><br />
    <input type="submit" value="Submit" />
 </form>

Как вы можете видеть, $headers использует массив, содержащий текст "От:", чтобы задать заголовок "от".

Надеюсь, это поможет.

 0
Author: Steve, 2020-08-24 14:22:36