Pergunta

Eu estou usando uma função de e-mail que está enviando de volta uma mensagem que está contido dentro do corpo $ variável. Eu quero enviar a mensagem para mim mesmo com certas palavras em negrito e uma série de marcas de quebra.

Aqui está o meu código (a sintaxe heredoc):

$body = <<<CTS
<h1><b>Order for $name on datevariable</b></h1><br /><br />

<b><u>Administrative Details</u></b><br />
<b>Employee ID:</b> $id<br />
<b>Cost Center:</b> $cost_center<br />
<b>Approved By:</b> $approved_by<br />
<b>Delivery Bldg:</b> $delivery_bldg<br />
<b>Delivery Contact Email:</b> $delivery_contact<br />
<b>Ext:</b> $del_contact_ext<br />
CTS;

Por alguma razão quando eu receber o e-mail, ele se parece com isso:

<h1><b>Order for James Important on datevariable</b></h1><br /><br />
<b><u>Administrative Details</u></b><br />
<b>Employee ID:</b> 213123<br />
<b>Cost Center:</b> 132123<br />
<b>Approved By:</b> Chris Seckla<br />
<b>Delivery Bldg:</b> 6<br />
<b>Delivery Contact Email:</b> test@email.com<br />
<b>Ext:</b> 56<br />

Ele preenche os valores de variáveis, mas por algum motivo ignora as tags de html. Alguém por favor pode me dizer como consertar isso?

Além disso, ele está ignorando as tags de quebra e só colocar pausas quando eu sair uma linha de espaço em branco. Todas as ideias sobre isso?

Foi útil?

Solução

Se este é um e-mail, você tem que definir o tipo de mime para text / html em vez de texto / plain. Caso contrário, o seu leitor de e-mail irá interpretar a mensagem como texto simples e ignorar todas as tags HTML.

Por exemplo, digamos que você está chamando a função mail assim:

mail( $to, $subject, $message, $headers )

Em $headers, você precisa de algo ao longo destas linhas (ajustado para o seu caso particular, é claro):

$headers = "From: webmaster@example.com\r\n";
$headers .= "Reply-To: webmaster@example.com\r\n";
$headers .= "Content-Type: text/html";

Se você quiser enviar texto simples e html e-mail (para que os leitores não-HTML pode ver uma versão limpa do e-mail sem todas essas tags), eu sugiro dar uma olhada em este tutorial para uma explicação mais detalhada sobre e-mails de várias partes.

Outras dicas

Você tem que definir um cabeçalho adicional quando o envio de php para o e-mail para exibir usando o formato html:

Content-Type: text / html; charset = whatever

Certifique-se de enviar o cabeçalho que os estados que é HTML ...

exemplo:

mail('email@domain.com', 'Subject',
'<html><body><b>Hello</b></body></html>',
"To: The Receiver <recipient@domain.com>\n" .
"From: The Sender <email@domain.com>\n" .
"MIME-Version: 1.0\n" .
"Content-type: text/html; charset=iso-8859-1"); 

Se você gostaria de enviar e-mails com PHP eu recomendo que você com o pacote PEAR Mail_Mime em vez de função mail plain

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top