6
votes

Envoi de courrier électronique HTML de PHP

J'essaie d'envoyer un e-mail HTML simple de PHP. Le code ci-dessous donne simplement un e-mail vide à Gmail. Il a également une attachement vide appelé «noname», ce qui n'est pas du tout ce que je veux; Bien que cela puisse simplement être un symptôme de cela ne fonctionne pas.

Le code que j'utilise est: xxx


0 commentaires

7 Réponses :


6
votes

Vous devez spécifier le type MIME dans les en-têtes parameter de la fonction mail. Ajoutez ceci:

$header  .= 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";


1 commentaires

Cela ne fonctionnera pas, car j'ai besoin d'un message de plusieurs pièces avec Test et HTML. J'ai essayé d'ajouter du mime aux deux, et cela n'aide pas, bien que je pense que vous avez raison que cela soit nécessaire. Donc, je dois avoir un problème supplémentaire sur cela.



-1
votes

J'espère que cela vous aide à PHP xxx


1 commentaires

Cela n'inclut pas de pièce texte à l'e-mail, de sorte que cela ne fonctionnera pas pour ce dont j'ai besoin.



9
votes

Si possible, utilisez le phpMailer classe. Cela simplifiera grandement votre travail.


0 commentaires

3
votes

Si vous utilisez une bibliothèque n'est pas un problème, utilisez Mailer Swift


2 commentaires

J'ai essayé de poirier en vain. I Général, j'essaie de minimiser les dépendances et de comprendre comment cela fonctionne.


Il existe plusieurs exemples sur la documentation Swift Mailer. Contrairement à Pear Mail, il n'a pas de dépendances



7
votes

Il s'avère que la touche est le type de codage. Au lieu de:

$notice_text = "This is a multi-part message in MIME format.";
$plain_text = "This is a plain text email.\r\nIt is very cool.";
$html_text = "<html><body>This is an <b style='color:purple'>HTML</b> text email.\r\nIt is very cool.</body></html>";

$semi_rand = md5(time());
$mime_boundary = "==MULTIPART_BOUNDARY_$semi_rand";
$mime_boundary_header = chr(34) . $mime_boundary . chr(34);

$to = "Me <foo@gmail.com>";
$from = "Me.com <me@me.com>";
$subject = "My Email";

$body = "$notice_text

--$mime_boundary
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

$plain_text

--$mime_boundary
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

$html_text

--$mime_boundary--";

if (@mail($to, $subject, $body,
    "From: " . $from . "\n" .
    "MIME-Version: 1.0\n" .
    "Content-Type: multipart/alternative;\n" .
    "     boundary=" . $mime_boundary_header))
    echo "Email sent successfully.";
else
    echo "Email NOT sent successfully!";

exit;


0 commentaires

0
votes

Il y a quelque chose d'important que je veux remarquer sur les caractères:

"Type de contenu: Texte / Plain; Charset = \" UTF-8 \ "; \ N"

est juste et non seulement

"Type de contenu: Texte / plaine; Charset = UTF-8 \ N" J'espère que je pourrais Aidez d'autres personnes qui frustrent tout en cherchant la même erreur comme moi.

N'oubliez pas également d'écrire uniquement \ R pour Windows et non pour les serveurs Linux. Et à la fin de l'en-tête doit être une ligne vierge supplémentaire: xxx


0 commentaires

0
votes

Le code suivant fonctionne pour moi pour supprimer les balises HTML dans le courrier.

$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";      
$headers .= "Content-Transfer-Encoding: base64\r\n\r\n"; 


0 commentaires