Impossible d'envoyer un message en utilisant smtp (client e-mail, objet CDO.Message)

Anonyme
2013-07-10T14:24:21+00:00

Windows 7 32 bits Family Premium installe sur un PC HP à la place du Windows Vista.

Problème : impossible d’envoyer les messages en utilisant différents clients smtp :

·       Incredimail

·       Les programmes développés en AutoIt en utilisant l’objet CDO.Message

Tous ces programmes fonctionnent correctement sur les autres PCs.

Les essais ont été faits avec l’envoi via le port 25 (sans authentification auprès du serveur) et via le port 465 via SSL

Les actions faites sans résultats:

**·**Réinitialisation couche IP (netsh int ip reset)

·       Application du fix Microsoft Fix it 50199

Merci d’avance de votre l’aide pour remettre la couche TCP/IP en état de marche avec smtp (pas de problèmes constatés avec les navigateurs Internet).

La suite présente la trace d’envoi en utilisant l’objet CDO.Message et le code de la fonction Autoit utilisée. Les adresses e-mail ont été masquées.

Cordialement

User3D_441

Envoi sans authentification

SMTP: smtp.free.fr match: 1

smtp server = smtp.free.fr, $ssl = 0, $IPPort = 25, $Username = , $Password =

10/07/2013 11:40:25 Debut envoi courriel

$objEmail.To = ******@free.fr

  1. addLineToMessage(*** COM Error !  Number: 80020009   ScriptLine: -1   Description:Le protocole spécifié est inconnu.)

*** COM Error !  Number: 80020009   ScriptLine: -1   Description:Le protocole spécifié est inconnu.

  1. addLineToMessage(*** COM Error !  Number: 80020009   ScriptLine: -1   Description:Le transport a échoué dans sa connexion au serveur.)

*** COM Error !  Number: 80020009   ScriptLine: -1   Description:Le transport a échoué dans sa connexion au serveur.

10/07/2013 11:41:00 Fin envoi courriel

10/07/2013 11:41:00 syncDossierCDOx86.exe v03f: fin script - tous les traitements ont duree 36sec

Envoi via SSL

SMTP: smtp.laposte.net match: 1

smtp server = smtp.laposte.net, $ssl = 1, $IPPort = 465, $Username = ******@laposte.net, $Password = xxxx

10/07/2013 11:48:54 Debut envoi courriel

$objEmail.To = ******@free.fr

  1. addLineToMessage(*** COM Error !  Number: 80020009   ScriptLine: -1   Description:Le protocole spécifié est inconnu.)

*** COM Error !  Number: 80020009   ScriptLine: -1   Description:Le protocole spécifié est inconnu.

  1. addLineToMessage(*** COM Error !  Number: 80020009   ScriptLine: -1   Description:Le transport a échoué dans sa connexion au serveur.)

*** COM Error !  Number: 80020009   ScriptLine: -1   Description:Le transport a échoué dans sa connexion au serveur.

10/07/2013 11:49:30 Fin envoi courriel

10/07/2013 11:49:30 syncDossierCDOx86.exe v03f: fin script - tous les traitements ont duree 36sec

Script

Func emailCDO($to, $body)

Local $i

Local $body_text

Local $objEmail = ObjCreate("CDO.Message")

$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'

Local $toaddress = $to[1]

For $i = 2 To UBound($to) - 1

If $to[$i] Then $toaddress &= ", " & $to[$i]

Next

$objEmail.To = $toaddress

VerboseLine(8, "$objEmail.To = " & $toaddress)

Local $i_Error = 0

Local $i_Error_desciption = ""

$objEmail.Subject = $s_Subject

$body_text = $body[0]

For $i = 1 To UBound($body) - 1

$body_text &= @CRLF & $body[$i]

Next

$objEmail.Textbody = $body_text & @CRLF

If $OutputFileName <> "" Then

FileClose($f)

$objEmail.AddAttachment($OutputFileName)

EndIf

$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer

$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort

;Authenticated SMTP

If $Username <> "" Then

$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = $Username

$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $Password

EndIf

If $ssl Then

$objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

EndIf

;Update settings

$objEmail.Configuration.Fields.Update

; Set Email Importance

$objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal"

$objEmail.Fields.Update

; Sent the Message

$objEmail.Send

If @error Then

If $OutputFileName <> "" Then $f = FileOpen($OutputFileName, 1)

SetError(2)

Return $oMyRet[1]

EndIf

If $OutputFileName <> "" Then $f = FileOpen($OutputFileName, 1)

$objEmail = ""

EndFunc   ;==>emailCDO

;-----------------------------------------------------------------

; Com Error Handler

Func MyErrFunc()

Local $HexNumber = Hex($oMyError.number, 8)

$oMyRet[0] = $HexNumber

$oMyRet[1] = StringStripWS($oMyError.description, 3)

VerboseLine(0, "*** COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1])

SetError(1); something to check for when this function returns

Return

EndFunc   ;==>MyErrFunc

Windows pour les particuliers | Versions antérieures de Windows | E-mail et communications

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

2 réponses

  1. Anonyme
    2013-07-12T09:26:34+00:00

    Bonjour,

    Ces opérations sont assurés par la méthode $objEmai.send  d'objet CDO.Message d'origine Microsoft (cf la procédure dans ma question). Elles fonctionnent parfaitement sur une multitude de PCs, mais j'ai un PC ou ceci ne marche pas.

    La programmation directe du dialogue smtp via la couche TCP ne marche pas sur ce PC, non plus – lors d’un essai de connexion vers le serveur distant smtp, la couche TCP sort par un time-out dans les programmes qui se connectent avec les mêmes paramètres au même serveur distant et qui fonctionnent parfaitement sur les autres PCs.

    Le client Incredimail n’est pas capable d’envoyer des messages sur ce PC, non plus.

    Donc l'origine du problème est l'altération de la configuration de cette couche sur ce PC (probablement un bug qui se manifeste dans les conditions très particulières comme installation du Windows 7 par-dessus de Windows Vista, mais je ne peux pas vérifier ce point). Comment la supprimer et réinstaller complètement pour qu’elle soit correcte? Les procédures que j’ai trouvé sur le site de Microsoft et qui sont citées dans ma question restent sans effet.

    Cordialement

    User3D_441

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2013-07-12T08:13:12+00:00

    Bonjour User3D\_441

    Merci de prendre le temps de nous écrire, Ce protocole est basé sur un receveur-SMTP et un Envoyeur-SMTP, c’est à dire le serveur de la personne qui envoie le mail et le serveur de la personne qui reçoit le mail. L’envoyeur-SMTP envoie différentes commandes et le Receveur-SMTP accepte ou non le message. Le port réservé au protocole SMTP est le port n°25.

    Il faut ensuite prévenir le serveur que l' on commence l' édition du message en lui envoyant la commande "DATA" 

    1. On définit le sujet du mail en tapant "subject:sujet-du-mail" 
    2. On entre ensuite directement le texte à envoyer et on presse la touche "enter" pour passer une ligne. Pour finir le texte du message, taper "." et la touche "enter"  

    Revenez vers nous si besoin.

    Cordialement.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire