Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SMTP IIS ... et Free

13 réponses
Avatar
Alexis
Bonjour =E0 tous.
J'ai un probl=E8me avec IIS et le serveur SMTP.
Ca fait 1 an que ca marchait sans probl=E8me, et je viens de
m'apercevoir que les mails =E0 destination de free restent en queue
(dans le repertoire queue) ! Ceux =E0 destination des autres providers
partent sans probl=E8me.
Quelqu'un a une id=E9e sur l'origine de cette "blague"?

D=E9sol=E9 si c'est une erreur connue, mais la recherche de "iis + free +
smtp" ne m'a pas beaucoup aid=E9...
Merci
Alexis

3 réponses

1 2
Avatar
Alexis
jbongran a écrit :

Alexis wrote:
> jbongran a écrit :
>
>> Alexis wrote:
>>> jbongran a écrit :
>>>
>>>> Alexis wrote:
>>>>> jbongran a écrit :
>>>>>
>>>>>> Alexis wrote:
>>>>>>> Bonjour à tous.
>>>>>>> J'ai un problème avec IIS et le serveur SMTP.
>>>>>>> Ca fait 1 an que ca marchait sans problème, et je viens de
>>>>>>> m'apercevoir que les mails à destination de free restent en
>>>>>>> queue (dans le repertoire queue) ! Ceux à destination des autres
>>>>>>> providers partent sans problème.
>>>>>>> Quelqu'un a une idée sur l'origine de cette "blague"?
>>>>>>>
>>>>>>> Désolé si c'est une erreur connue, mais la recherche de "iis +
>>>>>>> free + smtp" ne m'a pas beaucoup aidé...
>>>>>>> Merci
>>>>>>> Alexis
>>>>>>
>>>>>> Le plus simple:
>>>>>> Depuis le serveur IIS faire un telnet 25 vers le serveur smtp a
>>>>>> problême du fai...
>>>>>>
>>>>>> Les point suivants sont à vérifier:
>>>>>> Tton serveur possède un nom fqdn quand il se présente (pour le
>>>>>> voir , il suffit de faire un telnet 25 127.0.0.1 depuis ton iis)
>>>>>> Il faut que le MX pour ton domaine pointe vers ce nom d'hôte
>>>>>> (pour le vérifier nslookup, set type=MX, tondomaine.tld)
>>>>>> Il faut que ce nom d'hôte retourne ton IP publique (nslookup
>>>>>> hôte.tondomaine.tld)
>>>>>> Il faut que la reverse adresse pointe vers ce nom d'hôte
>>>>>> (nslookup ton_ ip_publique)
>>>>>
>>>>> Salut jbongran.
>>>>> Depuis mon premier message, les choses ont un peu évolué...
>>>>> En fait, CERTAINS mail vers free.fr partent et d'autres non.
>>>>> Après quelques sueurs, je pense être arrivé à isoler le "tr uc" qui
>>>>> fait que ça part pas.
>>>>> Attention à l'hallucination: le caractère saut de ligne "n"
>>>>> semble être ce qui fait bloquer! (j'envoie les mails en php)
>>>>> Les mails qui ne contiennent pas de saut de ligne finissent par
>>>>> partir et arriver au destinataire (mais pas tout de suite, au bout
>>>>> d'une demi-heure, ce serait trop facile pour debugger sinon...)
>>>>> Merci tout de même pour ton aide!
>>>>
>>>> Je ne voudrai pas dire de bêtise mais le corps du mail doit finir
>>>> par au moins un retour ligne.
>>>> En fait rn devrait être systématique en fin de corps de message
>>>> (vbCrLf en vbscript)
>>>
>>> rn marchait pas non plus :(
>>> Mais j'ai trouvé une solution (sans explication), je rajoute
>>> $from.= "Content-type: text/html; charset= iso-8859-1n";
>>> dans la syntaxe de la fonction mail de php.
>>> J'ai pas cherché à comprendre le pourquoi du comment..
>>> Ca marche, problème réglé.
>>> Merci ;-)
>>
>> Euh, me parait pour le moins spécial d'avoir cette chaine en tant
>> qu'émetteur du mail...
>> Il me semble que cela vaudrait le coup de revoir le code php qui
>> génère le mail.
>
> Je l'ai pourtant pas inventé, cette chaine...
> et sans elle, point de salut !
> Je l'ai trouvé sur n'importe quel site qui explique la fonction mail,
> et elle permet d'envoyer des mails au format html (doit-on comprendre
> que free n'accepte que ces mails là? hum....)
> le code php qui génére le mail est de ce genre:
> $from = 'From: "Monsieur l'envoyeur"' . "rn" .
> 'Reply-To: "Monsieur l'envoyeur"' . "rn"
> ; $from .= "MIME-version: 1.0n";
> $from .= "Content-type: text/html; charset= iso-8859-1n";
> $from .= "Return-path: ";
>
> et bien sur
> mail ("","sujet","message",$from)
>
> A noter que le return-path ne fonctionne pas, ca renvoit au mail par
> défaut défini dans php.ini, et pas , mais c'est
> (encore) une autre histoire...

Cela ne ressemble (c'est le moins que l'on puisse dire) a du code php
permettant d'envoyer un mail, mais plutôt a du code php permettant de
generer un fichier a mettre dans le repertoire de dépôt.
En plus les rn en fin d'adresse expediteur et destinataire sont pour le
moins curieux
Tout comme le $From qui ne devrait être que l'adresse de l'expediteur e t les
autres chaines concaténées devraient l'être dans la variable qui es t passé à
la fonction mail en tant que message.
Je serai curieux de voir le code de la fonction mail



PS: cela dit, ma syntaxe initiale est utilisée et commentée sur la
page officielle de PHP:
http://fr.php.net/manual/fr/function.mail.php
Avatar
jbongran
Alexis wrote:
jbongran a écrit :

Alexis wrote:
jbongran a écrit :

Alexis wrote:
jbongran a écrit :

Alexis wrote:
jbongran a écrit :

Alexis wrote:
Bonjour à tous.
J'ai un problème avec IIS et le serveur SMTP.
Ca fait 1 an que ca marchait sans problème, et je viens de
m'apercevoir que les mails à destination de free restent en
queue (dans le repertoire queue) ! Ceux à destination des
autres providers partent sans problème.
Quelqu'un a une idée sur l'origine de cette "blague"?

Désolé si c'est une erreur connue, mais la recherche de "iis +
free + smtp" ne m'a pas beaucoup aidé...
Merci
Alexis



Le plus simple:
Depuis le serveur IIS faire un telnet 25 vers le serveur smtp a
problême du fai...

Les point suivants sont à vérifier:
Tton serveur possède un nom fqdn quand il se présente (pour le
voir , il suffit de faire un telnet 25 127.0.0.1 depuis ton
iis) Il faut que le MX pour ton domaine pointe vers ce nom
d'hôte (pour le vérifier nslookup, set type=MX, tondomaine.tld)
Il faut que ce nom d'hôte retourne ton IP publique (nslookup
hôte.tondomaine.tld)
Il faut que la reverse adresse pointe vers ce nom d'hôte
(nslookup ton_ ip_publique)



Salut jbongran.
Depuis mon premier message, les choses ont un peu évolué...
En fait, CERTAINS mail vers free.fr partent et d'autres non.
Après quelques sueurs, je pense être arrivé à isoler le "truc"
qui fait que ça part pas.
Attention à l'hallucination: le caractère saut de ligne "n"
semble être ce qui fait bloquer! (j'envoie les mails en php)
Les mails qui ne contiennent pas de saut de ligne finissent par
partir et arriver au destinataire (mais pas tout de suite, au
bout d'une demi-heure, ce serait trop facile pour debugger
sinon...) Merci tout de même pour ton aide!



Je ne voudrai pas dire de bêtise mais le corps du mail doit finir
par au moins un retour ligne.
En fait rn devrait être systématique en fin de corps de message
(vbCrLf en vbscript)



rn marchait pas non plus :(
Mais j'ai trouvé une solution (sans explication), je rajoute
$from.= "Content-type: text/html; charset= iso-8859-1n";
dans la syntaxe de la fonction mail de php.
J'ai pas cherché à comprendre le pourquoi du comment..
Ca marche, problème réglé.
Merci ;-)



Euh, me parait pour le moins spécial d'avoir cette chaine en tant
qu'émetteur du mail...
Il me semble que cela vaudrait le coup de revoir le code php qui
génère le mail.



Je l'ai pourtant pas inventé, cette chaine...
et sans elle, point de salut !
Je l'ai trouvé sur n'importe quel site qui explique la fonction
mail, et elle permet d'envoyer des mails au format html (doit-on
comprendre que free n'accepte que ces mails là? hum....)
le code php qui génére le mail est de ce genre:
$from = 'From: "Monsieur l'envoyeur"' .
"rn" . 'Reply-To: "Monsieur
l'envoyeur"' . "rn" ; $from . >>> "MIME-version: 1.0n"; $from .= "Content-type: text/html; charset >>> iso-8859-1n"; $from .= "Return-path: ";

et bien sur
mail ("","sujet","message",$from)

A noter que le return-path ne fonctionne pas, ca renvoit au mail par
défaut défini dans php.ini, et pas , mais c'est
(encore) une autre histoire...



Cela ne ressemble (c'est le moins que l'on puisse dire) a du code php
permettant d'envoyer un mail, mais plutôt a du code php permettant de
generer un fichier a mettre dans le repertoire de dépôt.
En plus les rn en fin d'adresse expediteur et destinataire sont
pour le moins curieux
Tout comme le $From qui ne devrait être que l'adresse de
l'expediteur et les autres chaines concaténées devraient l'être dans
la variable qui est passé à la fonction mail en tant que message.
Je serai curieux de voir le code de la fonction mail



PS: cela dit, ma syntaxe initiale est utilisée et commentée sur la
page officielle de PHP:
http://fr.php.net/manual/fr/function.mail.php



Déja en ce qui concerne le return path, sur la page que tu nous a donné:
"L'en-tête From définit également l'en-tête Return-Path sous Windows"
Puis, il est donné des exemples de syntaxe pour le paramètre 'to'
"Utilisateur "
et un peu plus bas, concernant l'implémentation sous Windows:
"De plus, le paramètre to ne doit pas être une adresse sous la forme
"Quelque chose ". La commande mail n'analysera pas
correctement ceci lors de la discussion avec le MTA."
Plutôt contradictoire comme doc !
Des deux trois tests effectués, le format long pose souci dans le paramètre
'to', alors qu'il passe si il est mis dans les entêtes

En résumé, je prendrai ce code, fait de petits bouts de code de la page que
tu a donné en reférence ;-)
Il ne faut mettre des retours lignes pour les adresses emails que si elles
apparaissent dans les entêtes supplémentaires, pas dans le paramètre 'to'
Idem pour le sujet, qu'il faut en plus encoder au cas où il contienne des
accents.
Et penser à couper les lignes longues (ici 70 caractères, le maxi pour la
fonction mail est de mille caractères d'après la doc)
<?php
function encode_iso88591($string)
{
$text = '=?iso-8859-1?q?';
for( $i = 0 ; $i < strlen($string) ; $i++ )
{
$val = ord($string[$i]);
if($val > 127 or $val == 63)
{
$val = dechex($val);
$text .= '='.$val;
} else {
$text .= $string[$i];
}
}
$text .= '?=';
return $text;
}

$to = '' . ', '
$to .= '';
$subject = encode_iso88591('Test avé accent');
$msg = '<html><head><title>Test avé accent</title></head>
<body><p>Paragraphe</p>
Bonjour Monsieur John Doe
</body>
</html>
' . "rnrn";
$message = wordwrap($msg, 70);
$headers = 'MIME-Version: 1.0' . "n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "n";
$headers .= 'To: Troisieme , Quatrieme
' . "n";
$headers .= 'From: moi ' . "n";
$headers .= 'Cc: ' . "n";
$headers .= 'Bcc: ';
mail($to, $subject, $message, $headers);
?>
Avatar
Alexis
jbongran a écrit :

Alexis wrote:
> jbongran a écrit :
>
>> Alexis wrote:
>>> jbongran a écrit :
>>>
>>>> Alexis wrote:
>>>>> jbongran a écrit :
>>>>>
>>>>>> Alexis wrote:
>>>>>>> jbongran a écrit :
>>>>>>>
>>>>>>>> Alexis wrote:
>>>>>>>>> Bonjour à tous.
>>>>>>>>> J'ai un problème avec IIS et le serveur SMTP.
>>>>>>>>> Ca fait 1 an que ca marchait sans problème, et je viens de
>>>>>>>>> m'apercevoir que les mails à destination de free restent en
>>>>>>>>> queue (dans le repertoire queue) ! Ceux à destination des
>>>>>>>>> autres providers partent sans problème.
>>>>>>>>> Quelqu'un a une idée sur l'origine de cette "blague"?
>>>>>>>>>
>>>>>>>>> Désolé si c'est une erreur connue, mais la recherche de "ii s +
>>>>>>>>> free + smtp" ne m'a pas beaucoup aidé...
>>>>>>>>> Merci
>>>>>>>>> Alexis
>>>>>>>>
>>>>>>>> Le plus simple:
>>>>>>>> Depuis le serveur IIS faire un telnet 25 vers le serveur smtp a
>>>>>>>> problême du fai...
>>>>>>>>
>>>>>>>> Les point suivants sont à vérifier:
>>>>>>>> Tton serveur possède un nom fqdn quand il se présente (pour le
>>>>>>>> voir , il suffit de faire un telnet 25 127.0.0.1 depuis ton
>>>>>>>> iis) Il faut que le MX pour ton domaine pointe vers ce nom
>>>>>>>> d'hôte (pour le vérifier nslookup, set type=MX, tondomaine .tld)
>>>>>>>> Il faut que ce nom d'hôte retourne ton IP publique (nslookup
>>>>>>>> hôte.tondomaine.tld)
>>>>>>>> Il faut que la reverse adresse pointe vers ce nom d'hôte
>>>>>>>> (nslookup ton_ ip_publique)
>>>>>>>
>>>>>>> Salut jbongran.
>>>>>>> Depuis mon premier message, les choses ont un peu évolué...
>>>>>>> En fait, CERTAINS mail vers free.fr partent et d'autres non.
>>>>>>> Après quelques sueurs, je pense être arrivé à isoler le " truc"
>>>>>>> qui fait que ça part pas.
>>>>>>> Attention à l'hallucination: le caractère saut de ligne "n"
>>>>>>> semble être ce qui fait bloquer! (j'envoie les mails en php)
>>>>>>> Les mails qui ne contiennent pas de saut de ligne finissent par
>>>>>>> partir et arriver au destinataire (mais pas tout de suite, au
>>>>>>> bout d'une demi-heure, ce serait trop facile pour debugger
>>>>>>> sinon...) Merci tout de même pour ton aide!
>>>>>>
>>>>>> Je ne voudrai pas dire de bêtise mais le corps du mail doit finir
>>>>>> par au moins un retour ligne.
>>>>>> En fait rn devrait être systématique en fin de corps de mess age
>>>>>> (vbCrLf en vbscript)
>>>>>
>>>>> rn marchait pas non plus :(
>>>>> Mais j'ai trouvé une solution (sans explication), je rajoute
>>>>> $from.= "Content-type: text/html; charset= iso-8859-1n";
>>>>> dans la syntaxe de la fonction mail de php.
>>>>> J'ai pas cherché à comprendre le pourquoi du comment..
>>>>> Ca marche, problème réglé.
>>>>> Merci ;-)
>>>>
>>>> Euh, me parait pour le moins spécial d'avoir cette chaine en tant
>>>> qu'émetteur du mail...
>>>> Il me semble que cela vaudrait le coup de revoir le code php qui
>>>> génère le mail.
>>>
>>> Je l'ai pourtant pas inventé, cette chaine...
>>> et sans elle, point de salut !
>>> Je l'ai trouvé sur n'importe quel site qui explique la fonction
>>> mail, et elle permet d'envoyer des mails au format html (doit-on
>>> comprendre que free n'accepte que ces mails là? hum....)
>>> le code php qui génére le mail est de ce genre:
>>> $from = 'From: "Monsieur l'envoyeur"' .
>>> "rn" . 'Reply-To: "Monsieur
>>> l'envoyeur"' . "rn" ; $from .=
>>> "MIME-version: 1.0n"; $from .= "Content-type: text/html; charset =
>>> iso-8859-1n"; $from .= "Return-path: ";
>>>
>>> et bien sur
>>> mail ("","sujet","message",$from)
>>>
>>> A noter que le return-path ne fonctionne pas, ca renvoit au mail par
>>> défaut défini dans php.ini, et pas , mais c'est
>>> (encore) une autre histoire...
>>
>> Cela ne ressemble (c'est le moins que l'on puisse dire) a du code php
>> permettant d'envoyer un mail, mais plutôt a du code php permettant de
>> generer un fichier a mettre dans le repertoire de dépôt.
>> En plus les rn en fin d'adresse expediteur et destinataire sont
>> pour le moins curieux
>> Tout comme le $From qui ne devrait être que l'adresse de
>> l'expediteur et les autres chaines concaténées devraient l'être dans
>> la variable qui est passé à la fonction mail en tant que message.
>> Je serai curieux de voir le code de la fonction mail
>
> PS: cela dit, ma syntaxe initiale est utilisée et commentée sur la
> page officielle de PHP:
> http://fr.php.net/manual/fr/function.mail.php

Déja en ce qui concerne le return path, sur la page que tu nous a donn é:
"L'en-tête From définit également l'en-tête Return-Path sous Wind ows"
Puis, il est donné des exemples de syntaxe pour le paramètre 'to'
"Utilisateur "
et un peu plus bas, concernant l'implémentation sous Windows:
"De plus, le paramètre to ne doit pas être une adresse sous la forme
"Quelque chose ". La commande mail n'analysera pas
correctement ceci lors de la discussion avec le MTA."
Plutôt contradictoire comme doc !
Des deux trois tests effectués, le format long pose souci dans le param ètre
'to', alors qu'il passe si il est mis dans les entêtes

En résumé, je prendrai ce code, fait de petits bouts de code de la pa ge que
tu a donné en reférence ;-)
Il ne faut mettre des retours lignes pour les adresses emails que si elles
apparaissent dans les entêtes supplémentaires, pas dans le paramètr e 'to'
Idem pour le sujet, qu'il faut en plus encoder au cas où il contienne d es
accents.
Et penser à couper les lignes longues (ici 70 caractères, le maxi pou r la
fonction mail est de mille caractères d'après la doc)
<?php
function encode_iso88591($string)
{
$text = '=?iso-8859-1?q?';
for( $i = 0 ; $i < strlen($string) ; $i++ )
{
$val = ord($string[$i]);
if($val > 127 or $val == 63)
{
$val = dechex($val);
$text .= '='.$val;
} else {
$text .= $string[$i];
}
}
$text .= '?=';
return $text;
}

$to = '' . ', '
$to .= '';
$subject = encode_iso88591('Test avé accent');
$msg = '<html><head><title>Test avé accent</title></head>
<body><p>Paragraphe</p>
Bonjour Monsieur John Doe
</body>
</html>
' . "rnrn";
$message = wordwrap($msg, 70);
$headers = 'MIME-Version: 1.0' . "n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "n";
$headers .= 'To: Troisieme , Quatrieme
' . "n";
$headers .= 'From: moi ' . "n";
$headers .= 'Cc: ' . "n";
$headers .= 'Bcc: ';
mail($to, $subject, $message, $headers);
?>



Merci pour cette longue réponse.
En effet la doc est contradiction... c'est déjà pas simple avec
toutes ces versions, le fait que ce soit sous windows (plutôt rare),
et les commentaires d'utilisateurs pas forcément parole d'évangile...
Si on ajoute que dans le fichier php.ini, le paramètre sendmail_from
joue aussi le role de return-path, qu'il est pris par défaut même
lorsqu'un autre mail est spécifié dans la commande mail, on obtient
un beau méli-mélo...
A coté de ca, les problèmes d'accents dans dans le sujet sont presque
dérisoire :)
En revanche, je n'ai pas eu de problèmes de mails à plus de 1000
caractères, donc je suppose que c'est une limitation obsolète...
Merci pour le bout de code résumé. Il correspond "en gros" à ce qui
fonctionne effectivement en dernier recours. Reste le problème du
Return-path qui est complètement ignoré SAUF (et oui, un espoir?) si
le paramètre sendmail_from n'est pas spécifié dans le fichier
php.ini.
Dans ce cas là, le mail de retour en cas d'erreur arrive bien à
l'email précisé dans le headers
($headers .= 'Return-Path: ' . "n" ; )
mais il arrive AUSSI à l'adresse email par défaut de php.
A creuser un peu plus, il y a peut-être encore une solution de
solution à cette solution problématique...
1 2