PHPMailer “$mail->MsgHTML($msg)” problème avec “$msg”
Je pose la question ici car je n'ai pas eu une réponse d'OVH (mon hôte).
Voici le problème :
Si je remplace $mail->MsgHTML($msg) avec $mail->MsgHTML($_POST['message']), je reçois le mail instantanément avec les en-têtes, nom, e-mail, l'objet et le message.
Mais quand j'ai mis $msg au lieu de cela, je reçois pas de mail.
$msg='Name:'.$_POST['name'].'<br />
Email:'.$_POST['email'].'<br />
Subject: '.$_POST['subject'].'<br />
IP:'.$_SERVER['REMOTE_ADDR'].'<br /><br />
Message:<br /><br />
'.nl2br($_POST['message']).'
';
ensemble de PHP (à partir de FancyAJAXForm):
<?php
/* config start */
$emailAddress = 'my mail address';
/* config end */
require "class.phpmailer.php";
foreach($_POST as $k=>$v)
{
if(ini_get('magic_quotes_gpc'))
$_POST[$k]=stripslashes($_POST[$k]);
$_POST[$k]=htmlspecialchars(strip_tags($_POST[$k]));
}
$msg='Name:'.$_POST['name'].'<br />
Email:'.$_POST['email'].'<br />
Subject: '.$_POST['subject'].'<br />
IP:'.$_SERVER['REMOTE_ADDR'].'<br /><br />
Message:<br /><br />
'.nl2br($_POST['message']).'
';
$mail = new PHPMailer();
$mail->IsMail();
$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->AddAddress($emailAddress);
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->Subject = "Contact Form: ".mb_strtolower($_POST['subject'])." from ".$_POST['name']."";
$mail->MsgHTML($msg);
$mail->Send();
?>
- vous pouvez poster à la sortie de
var_dump($msg)
- Avez-vous vérifier la valeur de retour de
Send()
? Avez-vous vérifier votre dossier spam? Avez-vous regardez les en-têtes des e-mail qui a fait passer à travers (il devrait y avoir quelques info sur le chemin de l'e-mail prend, certains serveurs de relais sont plus difficiles que d'autres à propos de ce qu'ils passent à travers)? - le var_dump($msg) retour : "Nom: Email: Objet: IP: **mon Message ip:" DCoder: Comme je l'ai dit, je reçois des mail lorsque je remplace MsgHTML($msg) par MsgHTML($_POST['message']);
- je suppose que c'est le fait d'être arrêté par un filtre anti-spam, essayez de les envoyer à un compte sur la machine locale et de voir si vous recevez le message d'
- Un compte sur la machine locale? Je ne sais pas comment faire... je suis en attente d'une réponse de OVH. Peut-être qu'il faudra plus de temps pour ce genre de mail pour être traitées par le serveur? Merci pour vos réponses, si quelqu'un a une idée ou envie de partager une pensée, il est bienvenu.
Vous devez vous connecter pour publier un commentaire.
Ok j'ai eu le problème est résolu.
J'ai remplacé $mail->msgHTML($msg) avec le corps de la fonction :
Il fonctionne parfaitement!
Merci à tous les participants!
Je sais que ce n'est pas exactement en temps opportun, mais j'ai trouvé une solution alternative:
J'ai eu un problème similaire, mais j'ai eu quelques pages qui ont travaillé et certains qui n'ont pas. J'ai essayé ta solution, mais il m'a donné les mêmes résultats.
Puis j'ai regardé le code source html des e-mails à partir de la pages, et a remarqué que j'avais compris l'ouverture et la fermeture de html et des balises de corps, et je n'avais pas inclus dans le non-travail des pages. C'est tout ce qu'il a fallu, et $mail->msgHTML($msg) a travaillé pour moi.
Espère que cette aide.