Pergunta

É possível enviar e-mails com a função wp_mail () com seu tipo de conteúdo: multipart/alternativa?

Preciso enviar e -mails que possam ser mostrados como HTML ou texto simples, dependendo de qual meio interpreta o email.

Quaisquer sugestões são bem -vindas!

Foi útil?

Solução

Está bem ali no wp_mail() documentação (debaixo Uso):

O tipo de conteúdo padrão é 'texto/plano', que não permite o uso de HTML. Você pode definir o tipo de conteúdo do email usando o filtro 'WP_MAIL_CONTENT_TYPE' (veja o exemplo abaixo) ou incluindo um cabeçalho como "Content-Type: Text/Html". Tenha cuidado para redefinir 'wp_mail_content_type' de volta para 'texto/simples' depois de enviar sua mensagem, porém, porque não fazer isso pode levar a problemas inesperados com e-mails de WP ou plugins/temas.

(ênfase meu)

O segundo exemplo na página mostra como fazê -lo (o exemplo usa text/html Mas você deve ser capaz de usar o seu multipart/alternative em vez de.

Outras dicas

É totalmente possível quando você tem acesso à instância do phpmailer.

if ($is_html) 
    add_action('phpmailer_init', 'fix_mimeheader');

// more code.

wp_mail( $to, $subject, $html_message, $headers, $attachments );

// ...

function fix_mimeheader( $phpmailer ) {
     // Generate $text_message here.
     // ...

     $phpmailer->AltBody = $text_message;
}

A mensagem enviada para WP_MAIL deve ser o seu código HTML. Você também não deve incluir cabeçalhos do tipo conteúdo. Atualmente, uso, CC e Responder-To no plug-in que fiz.

Se o email estiver sendo enviado como HTML, executo a ação que define diretamente a propriedade Altbody no objeto Phpmailer. Isso faz com que os sinalizadores adequados convertem o email em um email multipart/alternativo.

Você pode usar o filtro wp_mail_content_type, que agora foi documentado no Codex.

A documentação WP_MAIL sobre a redefinição do tipo de conteúdo de volta para 'Texto/Plano' é meio enganosa, IMO. Como este é um filtro, você realmente não o "redefiniu". O que você precisa considerar em seu filtro é uma lógica condicional para determinar quando você precisa usar multipart vs. texto simples ou html:

add_filter( 'wp_mail_content_type', 'my_mail_content_type' );
function my_mail_content_type( $content_type ) {

    if( $some_condition ) {
        return 'multipart/mixed';
    } else {
        return 'text/plain';
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top