L'envoi de courriels au format HTML à partir de PHP
J'essaie d'envoyer un simple e-mail de HTML à partir de PHP. Le code ci-dessous simplement des résultats dans un vide e-mail dans GMail. Il dispose également d'un vide de la pièce jointe appelée "noname", ce qui n'est pas du tout ce que je veux; mais c'est peut-être juste un symptôme de, il ne fonctionne pas.
Le code que j'utilise est:
<?php
//define the receiver of the email
$to = '[email protected]';
//define the subject of the email
$subject = 'Test HTML email';
//create a boundary string. It must be unique
//so we use the MD5 algorithm to generate a random hash
$random_hash = md5(date('r', time()));
//define the headers we want passed. Note that they are separated with \r\n
$headers = "From: [email protected]\r\nReply-To: [email protected]";
//add boundary string and mime type specification
$headers .= "\r\nContent-Type: multipart/alternative; boundary=\"PHP-alt-".$random_hash."\"";
//define the body of the message.
ob_start(); //Turn on output buffering
?>
--PHP-alt-<?php echo $random_hash; ?>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Hello World!!!
This is simple text email message.
--PHP-alt-<?php echo $random_hash; ?>
MIME-Version: 1.0
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
<h2>Hello World!</h2>
<p>This is something with <b>HTML</b>formatting.</p>
--PHP-alt-<?php echo $random_hash; ?>--
<?
//copy current buffer contents into $message variable and delete current output buffer
$message = ob_get_clean();
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed"
echo $mail_sent ? "Mail sent" : "Mail failed";
Vous devez vous connecter pour publier un commentaire.
Si possible, utiliser la PHPMailer classe. Il va grandement simplifier votre travail.
Il s'avère que la clé est le type de codage. Au lieu de:
J'avais besoin d'utiliser:
Il pourrait dépendre sur des trucs aussi détaillée que la façon dont vous enregistrez le fichier PHP dans votre propre éditeur de texte. Je n'ai pas regardé, mais le iconv fonction en PHP peut m'ont apporté un peu de joie aussi. Donc, je pense que cette partie est vraiment sensible.
Voici un meilleur extrait d'un exemple de code qui montre toute chose de bout en bout:
-Kevin
Vous devez spécifier le type mime dans les en-têtes de paramètres de la messagerie de la fonction. Ajouter cette:
Il est également indiqué dans le PHP-Documentation de l'électronique-fonction. Voir l'exemple 4
Si l'aide d'une bibliothèque n'est pas un problème, suffit d'utiliser Swift Mailer
Il y a quelque chose d'important, je veux un avis sur les jeux de caractères ici:
"Content-Type: text/plain; charset = \"UTF-8\";\n"
est droit et pas seulement
"Content-Type: text/plain; charset=UTF-8\n"
Espère que je pourrais aider d'autres personnes qui frustrer tout en recherchant la même erreur que moi.
Souviens-toi aussi de l'écrire uniquement \r pour windows et pas sous Linux-Serveurs.
Et à la fin de l'en-tête devrait être un interligne supplémentaire:
Code suivant fonctionne pour moi de supprimer les Balises HTML dans mail.
Espère que cela vous aide en php