Por que o wp_mail () não me permite configurar o cabeçalho From: quando o simples e simples PHP mail () irá?

32

Quando eu uso wp_mail( $to, $subject, $message, $headers ) (com valores em vigor, é claro), o e-mail é enviado com um nome e e-mail que não está definido em nenhum lugar que eu possa encontrar (nem mesmo em configurações PHP ou Apache). No entanto, usar mail( $to, $subject, $message, $headers ) funciona bem. O que poderia estar acontecendo com wp_mail() para causar isso?

    
por helenhousandi 10.02.2011 / 21:45
fonte

5 respostas

43

Oi @helenyhou:

Você pode definir o cabeçalho, mas não com um parâmetro. O WordPress usa "ganchos" e os ganchos que você precisa são 'wp_mail_from' e 'wp_mail_from_name' ganchos.

Aqui estão os ganchos que você pode adicionar ao arquivo functions.php do seu tema para modificar o "From:" ao usar wp_mail() para o endereço de e-mail Helen Hou-Sandi <helenyhou@example.com> :

add_filter('wp_mail_from','yoursite_wp_mail_from');
function yoursite_wp_mail_from($content_type) {
  return 'helenyhou@example.com';
}
add_filter('wp_mail_from_name','yoursite_wp_mail_from_name');
function yoursite_wp_mail_from_name($name) {
  return 'Helen Hou-Sandi';
}
    
por MikeSchinkel 10.02.2011 / 21:56
fonte
4

Bem, se você estiver usando o formato From: "Your Name" <youremail@example.com>\r\n em seus cabeçalhos, não estará tendo problemas (a menos que você tenha um plug-in instalado que substitua a função wp_mail).

No entanto, como Mike disse, você pode filtrar os valores finais com esses filtros ou pode simplesmente instalar este plug-in:

Enviar de

Ele lhe dará uma configuração de opções para determinar qual nome e e-mail usar em wp_mail.

    
por John P Bloch 10.02.2011 / 21:59
fonte
1

Desculpe reviver uma pergunta antiga, mas não é melhor definir os cabeçalhos da seguinte forma:

$subject  = "MyPlugin: Alert (".get_bloginfo('wpurl').")";
$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=".get_bloginfo('charset')."" . "\r\n";
$headers .= "From: MyPlugin <".$this->settings['from_address'].">" . "\r\n";
wp_mail($this->settings['notify_address'], $subject, $alertMessage, $headers);

Dessa forma, você não precisa se preocupar em usar um filtro e depois removê-lo após wp_mail ().

    
por Brady 15.04.2011 / 17:29
fonte
1

É um pouco complicado, mas você também pode usar a tag de cabeçalho Reply To :

$headers = 'Reply-To: "Aaren A. Aarenson" <aaron@somemail.com>';

Infelizmente, isso adiciona o endereço de e-mail à lista De e a resposta significa que você precisará remover manualmente o endereço configurado no filtro wp_mail_from .

    
por Sjors Hijgenaar 14.09.2015 / 21:01
fonte
0

Eu tive o mesmo problema. Para mim, surgiu que o provedor de hospedagem (BlueHost) estava impedindo de mudar de campo. Aqui eles explicam enlace .

Eu consertei o problema adicionando o email às caixas de correio do cPanel como elas dizem.

    
por Tigran 14.08.2015 / 15:33
fonte