Forum CMS Made Simple FR

Version complète : [RESOLU]Problème envoi de mail vers free, gmail, orange
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: !1.11.x
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Bonjour,

Dans un premier temps : la version de CMSMS indiqué n'est pas forcement la bonne car le problème concerne plusieurs sites qui ne sont sous la même version.

Voila notre problème :
Depuis quelque temps nous avons des problèmes avec l'envoi de mail vers free, gmail et orange.

Voila ce que nous recevons comme erreurs :

...said: 550 5.1.0 <nom_utilisateur> SIZE=3250 BODY=8BITMIME domain name required (in reply to MAIL FROM command)

Après des recherches sur internet, il semble que se soit le Return-Path dans le header du mail qui ne soit pas bon.
Il devrais contenir l'adresse mail de l'expéditeur mais il contient le nom de l'utilisateur.

J'ai fais différent test d'envoi à partir de outlook et de roundcube, le Return-Path est bon.
Le Return-Path est incorrect lorsque j'envoie un mail à partir du formulaire de CMSMS.

Le module CMSMailer est configuré en sendmail.

Nous n'avions jamais rencontré de problème jusqu’à présent.

Si vous avez une solution.

Cordialement

bobjo
Si c'est CMSMailer c'est donc uniquement avec ce module que tu as un problème ? ou avec un autre module ?
Bonjour,

Merci de me répondre.

Apparemment c'est CMSMailer qui pose un problème je viens de faire un test d'envoi avec le formulaire de test de CMSMailer.
J'ai regardé l'entête du mail que j'ai reçu sur outlook est le return path met le nom de l'utilisateur.
J'ai comparé avec l'entête d'un mail que j'ai envoyé depuis outlook vers une autre adresse est le return path est bon.

Donc je pence que le problème viens de CMSMailer. Mais je peux me trompé car nous utilisons FormBuilder et NMS (sur certain site).
Il se peut que la config de ces deux module soit incorrect mais d'après ce que j'ai compris FormBilder et NMS s’appuie sur CMSMailer pour l'envoi de mail.

Cordialement

bobjo
CMSMailer je déplace vers le forum Modules
Désolé de m'être trompé de forum...
C'est surtout que tu devrais avoir plus de réponses ici normalement Wink
Bon j'avais lâché un peu l'affaire mais je suis de retour...

Alors j'ai regardé les fichiers des modules FormBuilder et CMSMailer.
C'est assez complexe mais je commence à comprendre le fonctionnement.

Dans le fichier DispositionEmailBase.class.php de FormBuilder j'ai trouvé cette ça à la ligne 117 :
Code :
[== PHP ==]
$mail->SetFrom($this->GetOption('email_from_address'));

$mail est un instance de CMSMailer.
Cette ligne de code (si j'ai bien compris) passe à la fonction SetFrom la valeur de email_from_address qui si je ne me trompe pas correspond à la valeur du champ "From Adresse" pour Mail de l'expéditeur pour un champ de type Envoyer par mail les résultats aux adresses fournies dans un formulaire.

Dans CMSMailer j'ai trouvé la fonction SetFrom dans le fichier CMSMailer.module.php à la ligne 494 :
Code :
[== PHP ==]
function SetFrom( $txt )
  {
    $this->_load();
    $this->the_mailer->From = $txt;
  }

$this->the_mailer est une instance de phpmailer. Cette fonction attribut la valeur de la variable $txt à From.

Et dans php mailer j'ai trouvé cette ligne qui semble construire le header du mail dans le fichier class.phpmailer.php ligne 1180 :
Code :
[== PHP ==]
$result .= $this->HeaderLine('Return-Path', trim($this->From));

Donc tout à l'air ok.

Ce que je ne comprend pas c'est que le champ "From Adresse" pour Mail de l'expéditeur dans mon formulaire est rempli avec une adresse mail qui à pour domaine le même que celui du site donc je ne devrais pas rencontré d'erreur dans le return-path.

Cordialement

bobjo
Alors voila j'ai peut être identifié le problème.

Dans le fichier class.phpmailer.php ligne 686 il y a la fonction SendmailSend qui sert à envoyer un mail en utilisant sendmail (le problème de return-path est avec sendmail)
Je met le code :
Code :
[== PHP ==]
protected function SendmailSend($header, $body) {
    if ($this->Sender != '') {
      $sendmail = sprintf("%s -oi -f %s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
    } else {
      $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail));
    }

On voit que si $this->Sender est renseigné, la valeur est ajouté.
Dans CMSMailer il y a bien une fonction SetSender afin de renseigner la variable.
Quand j'ai cherché SetSender ou Sender dans Formbulder j'ai rien trouvé donc apparemment Formbuilder ne renseigne pas cette variable.

Le Problème viens sans doute de la.

Si vous pouviez jeter un oeuil histoire de confirmer (ou d'infirmer) cette théorie cela m'aiderai.

Cordialement

bobjo
Donc je viens de tester ma théorie du SetSender est c'est bon.
J'ai ajouté dans le fichier DipositionEmailBase.class.php autour de la ligne 117 de FormBuilder :
Code :
[== PHP ==]
$mail->SetSender($this->GetOption('email_from_address'));
juste après :
Code :
[== PHP ==]
$mail->SetFrom($this->GetOption('email_from_address'));
et le Return-Path est correct.

Certains vont me dire que c'est pas bien de modifier les fichiers du cœur des modules (en général j'essai de ne pas y touché) mais la je ne vois vraiment pas d'autres solutions....

Cordialement

bobjo

PSAngryjce76350 Tu as déplacé ce sujet dans le forum Modules, Tag pour que j'ai plus de réponses à mon sujet mais bon cela n'a pas été le cas. Merci quand même.
la classe PHPMAILER n'est pas à jour dans CMSMailer c'est la Version 5.2.1 (January 16, 2012)

alors que la version stable est actuellement en v5.2.13 (Sep 14)

Sur CMSMS V2 c'est un peux plus à jour Version 5.2.8 (May 14th 2014) Wink
Ce n'est pas la version de phpmailer qui pose un problème mais le module FormBuilder.

De plus les sites que gère sont sur un serveur dédié ovh sous release 3 qui a un php 5.3.3 impossible de mettre à jour donc en attendant de trouver une solution à la version de php je n'ai pas accès à la version 2 de CMSMS.
>un serveur dédié ovh sous release 3 qui a un php 5.3.3
Houla ... PHP5.3.x est Out depuis le 14/08/2014
la branche 5.4.x (5.4.45) fin de vie 03/09/2015
la branche 5.5.x (5.5.30) Fin support actif 10/07/2015 - Security fixes 20/06/2016
Donc c'est PHP 5.6.x (5.6.16) actuellement, ou PHP 7.0.
Oui je sais...
C'est à ovh qui faut le dire.
Mais ils en ont rien à faire.
Tous le monde s'en plein.
Leur release 3 est complètement dépassé.
Et comme je suis pas admin serveur je galère.
Pour l'installation d'un nouveau site avec CMSMS je dois composé avec des vieilles version de modules.

Enfin je vais pas faire ma pleureuse...
>C'est à ovh qui faut le dire.
:lol: https://www.ovh.com/fr/news/a1948.php7-n...ent-migrer :lol: