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: p>
7 Réponses :
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";
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.
J'espère que cela vous aide à PHP
Cela n'inclut pas de pièce texte à l'e-mail, de sorte que cela ne fonctionnera pas pour ce dont j'ai besoin.
Si possible, utilisez le phpMailer classe. Cela simplifiera grandement votre travail. P>
Si vous utilisez une bibliothèque n'est pas un problème, utilisez Mailer Swift P>
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
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;
Il y a quelque chose d'important que je veux remarquer sur les caractères:
est juste et non seulement p> 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: p> "Type de contenu: Texte / Plain; Charset = \" UTF-8 \ "; \ N" CODE> P > "Type de contenu: Texte / plaine; Charset = UTF-8 \ N" Code> P> P> J'espère que je pourrais Aidez d'autres personnes qui frustrent tout en cherchant la même erreur comme moi. P>
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";