как установить из адреса в соответствии с адресом ввода формы для wp_mail ()?

Я пытаюсь создать форму и отправить ее на мой адрес электронной почты, используя wp_mail. мой код wp_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.-]+\.[az]{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 "my@email.com"; } /* from name*/ add_filter( 'wp_mail_from_name', 'my_mail_from_name' ); function my_mail_from_name( $name ) { return "my name"; } 

Итак, как можно заставить отправителей отправлять электронную почту от заголовка?

Если я понимаю вас правильно, у вас просто возникают проблемы с получением из набора? Самый простой способ – просто добавить это из заголовков электронной почты в функцию wp_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('my_email@email.com', $title, $message, $headers); remove_filter('wp_mail_content_type', 'set_html_content_type'); return $email; } 

Крючок wp_mail_from предоставляет электронное письмо, которое вы уже установили в своей функции wp_mail , вы не установили его так, чтобы он получал пустоту и отправлял пустую переменную ($ senderEmail не был определен, поэтому возвращался бы undefined).

Для этой фильтрации адрес электронной почты:

 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 .