2010-07-28 8 views
2

Je crée une application web pour un client qui a la possibilité d'envoyer des emails. J'utilise TinyMCE pour mon éditeur de texte, qui fonctionne très bien. J'utilise sendmail() avec PHP Swiftmailer pour gérer l'envoi réel de l'email. Swiftmailer fonctionne bien, aussi bien.PHP formatage sendmail() pas conservé

Le seul problème que je rencontre est que lorsque je reçois le courrier électronique (dans Gmail), le formatage n'est pas rendu correctement. Je reçois ce qui suit dans le corps de mon email:

<p>Oh Hello! This is a test <strong>message</strong>. Here is a link: <a href=\\\"http://www.google.com\\\">Google</a>.</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>Line breaks!<br /> <br /> Shift breaks!</p>\r\n<p>&nbsp;</p>\r\n<p>Bye!</p> 

Les liens rendent, et c'est à ce sujet. Qu'est-ce que je rate?

Merci!

Répondre

3

Vérifiez les deuxième et troisième blocs de code dans la documentation sur la façon de définir le type de contenu HTML ...

http://swiftmailer.org/docs/header-parameterized

+0

Merci. Y a-t-il une différence entre la définition du jeu de caractères dans l'objet message et sa définition dans l'en-tête? – littleK

+0

Pour être honnête, je ne peux pas dire avec certitude, je ne suis pas familier avec Swift Mailer, je savais juste que vous deviez définir l'en-tête, donc Googled pour leurs docs sur la façon de le faire. J'imagine qu'à la fin de la journée, ils se résument à la même chose, mais l'un écraserait probablement l'autre à un moment donné. –

2

Vous devez envoyer votre e-mail dans un format HTML réel. Vous envoyez plutôt le texte brut du HTML. Les liens sont rendus parce que Google est sympa et lie automatiquement ce qu'il croit être une URL valide.

Je recommande fortement la classe Pear. Il existe des fonctions pratiques pour définir les corps de message HTML et texte brut.

0

ce que je ferais dans votre cas est quelque chose comme ceci:

<?php 

$headers = "From: Me <[email protected]>\r\n"; 
$headers .= "X-Mailer: PHP/".phpversion()."\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; //States it is HTML Content 
$headers .= "Content-Transfer-Encoding: 7bit\r\n"; 

$subject = "This is my subject"; 

$message = <<<MESS 
<p>Oh Hello! This is a test <strong>message</strong>. Here is a link: <a href="http://www.google.com">Google</a>.</p> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p>Line breaks!<br /> <br /> Shift breaks!</p> 
<p>&nbsp;</p> 
<p>Bye!</p> 
MESS; 

if(mail("", $subject, $message, $headers) == True){ 
    echo "Message Sent"; 
} else { 
    echo "Message NOT Sent" 
} 

?> 

REMARQUE: GMAIL est vraiment pointilleux sur la façon dont il affiche les courriels. Il est préférable de créer un compte Gmail et de tester par vous-même son apparence. Hotmail est similaire