Mail de PHP Code la Ligne d'Objet
Lorsque j'essaie d'envoyer un HTML codé e-mail de PHP, si la ligne objet contient des caractères spéciaux comme "Here's the information you requested"
, PHP code pour lire "Here's the information you requested."
Comment puis-je résoudre ce problème?
Voici à quoi ressemble le code à l'aide de PHP mail():
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: ' . $mod_params['name'] . '<' . $mod_params['email'] . '>' . "\r\n";
$headers .= 'From: <[email protected]>' . "\r\n";
$email_to = $mod_params['email'];
$email_sub = "Here's the Information You Requested";
$body = html_entity_decode("<html><body>" . $email_html_body . "</body></html>");
mail($email_to,$email_sub,$body,$headers);
Il donne la même erreur que l'exécutant à travers le SugarPHPMailer classe.
OriginalL'auteur ericwindham | 2009-01-15
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
De cette façon, vous ne comptez pas sur le PHP ou le MTA de l'encodage de vous faire le travail, et le client de messagerie doivent la comprendre. Pas de caractères spéciaux seront présents dans votre nouveau sujet, donc, aucun problème ne devrait survenir lors de la prestation de l'e-mail.
Absolument merveilleuse solution. Des Multitudes de gratitude à vous @Pierre pour mettre fin à un de trois heures à s'arracher les cheveux de la session!!!
Vous pouvez utiliser chunk_split (à 60 caractères) et de les appliquer à chaque morceau, et ajouter une nouvelle ligne et un peu d'espaces pour rejoindre les morceaux. Je dis 60 caractères pour acomodate le reste de la tête de codage de la partie.
Il a travaillé pour moi, merci. Je suis à l'aide du symbole ® dans l'objet du courriel et je suis à l'aide de Symfony et Swifmailer.
OriginalL'auteur Peter Kopias
J'ai eu un problème similaire dans un WordPress plug-in je travaillais et je me suis creusé le cerveau et plus de l'essai de différentes suggestions à partir d'ici, et dans diverses autres résultats de recherche Google. J'ai enfin trouvé une solution qui a fonctionné dans ma situation donc je vais le partager. Je dirai que c'est Paul solution que j'ai essayé dans un premier temps et ça ne fonctionne pas, mais la raison en était à moi d'essayer de "raccourci" de la solution. Dans mon cas, juste appeler html_entity_decode() ne fonctionne pas. Pourquoi? Si j'avais lu la doc PHP de plus près, il aurait été évident. Mon problème était avec le codage sur un seul devis et la valeur par défaut pour html_entity_decode() est "ENT_COMPAT' qui laisse les guillemets simples seul. La solution était de régler tous les paramètres et que travaillé. En réalité, je pourrais sans doute avoir laissé le jeu de caractères depuis que j'ai l'encodage UTF-8, mais pensé que je être approfondie.
La leçon ici est un bon un, "Lire les docs". Je ne dis pas que vous n'avez pas (vous n'avez probablement), mais beaucoup d'entre nous obtenir pressé et brillant sur la solution qui est assis là nous pend au nez si nous avions seulement look.
OriginalL'auteur Adam Christianson
Si la chaîne n'a vraiment pas contenir de valeurs codées avant d'envoyer, jeter un oeil à cette:
Prendre un coup d'oeil à ces postes liés à SugarCRM:
Ajouter plus de références
OriginalL'auteur Michael Haren
Vous devez utiliser mb_encode_mimeheader, rappelez-vous juste avant.
Il prendra soin de l'encodage (lisible) Quoted-printable cas de besoin, et pause automatiquement le sujet dans la bonne quantité de lignes en fonction de la longueur.
OriginalL'auteur Pascal_dher
Essayez d'exécuter la ligne de l'objet à travers html_entity_decode(), ressemble peut-être que vous avez certaines entités dans la ligne d'objet.
OriginalL'auteur Paul Dixon
La soumission de la délinquance bloc de code souvent de vous assurer une meilleure réponse plus rapide. Vous êtes susceptible d'encodage du texte quelque part, avant que cette action a lieu. Comme suggéré précédemment, vous pouvez chercher que de l'action, et de le corriger, ou vous pouvez tout simplement décoder la ligne d'objet avant d'envoyer l'email.
Vous avez besoin de poster le code, il semblerait.
OriginalL'auteur Sampson