Problème d'envoi de mails

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'envoi de mails

Re: Problème d'envoi de mails

par Ryle » 07 mai 2015, 09:31

La version simple serait juste de faire un echo "----" . $message_mail . "----"; dans ta fonction pour faire apparaître le corps du message généré à l'écran. Il faudrait ensuite aller regarder le source de la page pour voir le html qui a été généré (et que tu retrouveras entre les "----"). Y aura peut être un truc plus ou moins flagrant comme une balise mal fermée, une guillemet oubliée, ...

As-tu essayé d'envoyé le mail sur différentes boites pour vérifier si ce n'est pas un problème du webmail/client de messagerie que tu utilises ?

Re: Problème d'envoi de mails

par sunwares » 06 mai 2015, 09:54

Bonjour Ryle,
comment fais t'on?
je ne suis pas un pro du php :)

Re: Problème d'envoi de mails

par Ryle » 06 mai 2015, 00:06

Si le mail part et que le problème est uniquement lié à l'affichage, c'est effectivement dans son contenu ou dans ses entêtes qu'il faut chercher le problème...
As-tu essayé d'afficher le code html généré à l'écran ou dans un fichier pour pouvoir contrôler que celui-ci est correct ?

Re: Problème d'envoi de mails

par sunwares » 05 mai 2015, 17:46

Merci pour le code, je l'ai mis en place, lancé et cela fonctionne.
J'ai remplacé les 2 headers (mime et encoding type).
Mais rien, toujours la même chose.
Par contre je tiens à le préciser le mail part bien.

Re: Problème d'envoi de mails

par @rthur » 05 mai 2015, 14:45

A première vue, je dirai qu'il manque la déclaration du MIME et que la ligne suivante n'est pas forcément utile :
$header .= "Content-Transfer-Encoding: binary";
Pour pouvoir débuguer efficacement, crée une nouvelle page PHP avec le code de la documentation pour envoyer un fichier HTML : http://php.net/manual/fr/function.mail.php#example-3802
Et regarde déjà si il fonctionne sur ton serveur avec tes adresses de destination, comme ça au moins tu auras un exemple de code qui fonctionne dont tu pourras t'inspirer.
Si ça ne fonctionne pas non plus avec l'exemple de la doc, c'est probablement un problème de serveur et donc tu pourras t'adresser à ton hébergeur.

Re: Problème d'envoi de mails

par sunwares » 05 mai 2015, 13:29

Donc en fait pas d'erreurs dans les logs.

Seuls ces lignes posent problème:

Code : Tout sélectionner

$message_mail = $language['page_ann_mail_msg'] .'<a href="'. $url .'">'. $language['page_ann_mail_lien'] .'</a><br><br>'. $language['page_ann_mail_nom'] .' : '. $name .'<br /><br />'. $language['page_ann_mail_signature'];
Dès qu'il y a du code html ça ne passe plus...
Le mail part... mais n'arrive pas, certainement bloqué car contenu non conforme.
Heeeelp :)

Re: Problème d'envoi de mails

par sunwares » 05 mai 2015, 11:28

Merci,
je viens de placer la ligne en début de code.
Je suis hébergé chez OVH, rien de flagrant dans les logs hélas.

Re: Problème d'envoi de mails

par @rthur » 05 mai 2015, 11:15

Bonjour,

Quel est le message d'erreur ?

Si il n'y a pas de message d'erreur qui s'affiche, regarde dans les logs de ton serveur ou active les avec la ligne suivante au début de ton code :
error_reporting(E_ALL);

Problème d'envoi de mails

par sunwares » 05 mai 2015, 11:09

Bonjour,
J'utilise les script d'annonce script pag, le template a été modifié depuis.
je fait face à des problèmes d'envoi de mails.
Ils partent bien mais n'arrive pas car une erreur se passe au niveau du traitement du corps du message.

Voici le code par exemple pour envoyer le mail de confirmation d'annonce:
function send_confirm($id, $array)
{
global $cache_mails_auto;

$email = stripslashes($array['ema']);
$titre = stripslashes($array['tit']);

$nom_mail = '';
$email_mail = '';

foreach($cache_mails_auto as $v)
{
if($v['type'] == 1)
{
$nom_mail = stripslashes($v['nom']);
$email_mail = stripslashes($v['email']);
$titre_mail = stripslashes($v['titre']);
$message_mail = stripslashes($v['message']);
}
}

$url = URL .'/confirmer_ann.php?code='. $id .'&email='. $email;

$titre_mail = str_replace('<titre>', $titre, $titre_mail);
$message_mail = str_replace('<titre>', $titre, $message_mail);
$message_mail = str_replace('<url>', $url, $message_mail);

//Entête du mail

$header = "From: ". $nom_mail ." <". $email_mail.">\n";
$header .= "Reply-To: ". $email_mail ."\n";
$header .= "Content-Type: text/html; charset=\"utf-8\"\n";

$header .= "Content-Transfer-Encoding: binary";

mail($email, $titre_mail, $message_mail, $header);
return true;
}

Après avoir fait pas mal de tests, j'ai isolé les lignes qui posent problème dans mon cas:
$message_mail = str_replace('<titre>', $titre, $message_mail);
$message_mail = str_replace('<url>', $url, $message_mail);
Si je modifie le $message_mail en mettant du simple texte, le mail est bien reçu. En revanche si je laisse comme tel,cela semble bloquer dans l'interprétation du code.

Autres exemple, le code pour envoyer une annonce à un ami:
$message_mail = $language['page_ann_mail_msg'] .'<a href="'. $url .'">'. $language['page_ann_mail_lien'] .'</a><br><br>'.$language['page_ann_mail_nom'] .' : '. $name .'<br /><br />'. $language['page_ann_mail_signature'];
Là si modifie comme ci dessous, le mail est reçu avec la phrase de la variable language.
$message_mail = $language['page_ann_mail_msg']
Mais Si je mets juste un peu de code html, comme ci dessous, ça passe plus sad
$message_mail = $language['page_ann_mail_msg'] .'<a href="'. $url .'">'. $language['page_ann_mail_lien'] .'</a><br><br>';
Une piste ? je désespère :cry: