[R] Envoi d'URL avec _INetSmtpMail

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Lumi
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 09 mars 2010 02:02
Status : Hors ligne

[R] Envoi d'URL avec _INetSmtpMail

#1

Message par Lumi »

Bonjour,

j'ai un comportement étrange qui ne m'arrange pas avec _INetSmtpMail...

Si le paramètre Body contient "http://" il n'y a aucun message d'erreur, tout semble être émis. Sauf que le message n'arrive jamais à son destinataire. :shock:

Si je change qq chose dans la chaîne pour qu'il n'y ait plus "http://" (suppression d'un caractère, je ne change que le body) alors tout fonctionne à merveille...
:? :shock: :!:


pour essayer chez vous : :?:

Code : Tout sélectionner

#include <INet.au3>

$s_SmtpServer = "smtp." ; à compléter
$s_FromName = "" ; à compléter
$s_FromAddress = "" ; à compléter
$s_ToAddress = ""; à compléter, la vôtre
Dim $t_Body[1]
$t_Body[0] = "http://"
$s_Subject = "pour essai" 

if _INetSmtpMail ($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $t_Body) Then
    msgbox(0,"ok","aucune erreur")
Else
    msgbox(0,"erreur",@ERROR)
EndIf
 
Est-ce que ça fait pareil chez tout le monde ? Une idée de la cause ?
Qqn peut m'aider ? :idea: Merci...
:arrow: PS/ si j'utilise l'option $b_trace de la fonction alors tout semble se passer bien quelle que soit la chaîne à émettre. Jamais d'erreur annoncée. Mais en pratique... impossible pour moi d'émettre un courrier contenant http:// quelque part dans son body !
Modifié en dernier par Lumi le dim. 14 mars 2010 12:41, modifié 2 fois.
Avatar du membre
GhostLine
Niveau 7
Niveau 7
Messages : 342
Enregistré le : jeu. 12 mars 2009 15:28
Localisation : Paris
Status : Hors ligne

Re: [..] Envoi d'URL avec _INetSmtpMail

#2

Message par GhostLine »

Un filtre antispam peut être ?
elminio
Niveau 3
Niveau 3
Messages : 34
Enregistré le : mar. 09 févr. 2010 15:24
Status : Hors ligne

Re: [..] Envoi d'URL avec _INetSmtpMail

#3

Message par elminio »

Bonjour Lumi,

de mon côté quand je test ton script j'ai une erreur 50
Lumi
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 09 mars 2010 02:02
Status : Hors ligne

Re: [..] Envoi d'URL avec _INetSmtpMail

#4

Message par Lumi »

GhostLine a écrit :Un filtre antispam peut être ?
:) Au moins merci d'y avoir songé : mais malheureusement non ce n'est pas ça. Je peux habituellement m'envoyer des liens dans mes courriels, c'est juste avec cette fonction d'AutoIt que ça ne marche pas.
Pourquoi, de ton côté ça marche tout le temps quel que soit le texte dans body ?
elminio a écrit :Bonjour Lumi,
de mon côté quand je test ton script j'ai une erreur 50
Cela arrive lorsque le fournisseur d'accès ne laisse pas accéder à n'importe quel serveur SMTP. Essayer avec un autre smtp (celui de ton ISP ?) ou alors peut-être qu'il veut une idendification. Mais globalement, de ce côté je n'ai pas de problème.
Toutefois, pour ceux qui l'ont, il y a une 2e version de la fonction (qu'on trouve sur le net) pour pouvoir modifier le port, écrire en https, ajouter l'identification (mot de passe) et etc. (tous les petits détails utiles). Parfois c'est la commande HELO qui doit être modifiée plutôt que de laisser le réglage par défaut de cette option. Bref, que tout les SMTP ne fonctionnent pas avec tous les ISP : ça c'est vrai que ce n'est pas amusant mais c'est une contrainte connue. En tout cas, c'est une contrainte qui ne change pas selon le body :|

D'après un autre forum (anglais) on a découvert qu'on peut faire l'envoi en html au lieu de texte simple. Mais le lien est alors mis dans une blaise <a href=""></a> : malheureusement pour moi, je n'ai pas le choix, je dois rester en texte. Qui plus est on a aussi découvert que d'autres langages de scripts pouvaient avoir le même problème. Ce qui n'explique pas, même si c'est un filtre du fournisseur d'accès, pourquoi le SMTP ne renvoie pas d'erreur... (en plus qu'il reste incongru de ne pas avoir le droit d'envoyer une URL)
Lumi
Niveau 1
Niveau 1
Messages : 11
Enregistré le : mar. 09 mars 2010 02:02
Status : Hors ligne

Re: [..] Envoi d'URL avec _INetSmtpMail

#5

Message par Lumi »

Résolu :

c'est bien un filtre SMTP (qui le vilain n'avertit pas de son rejet). Le truc a été d'ajouter du texte en plus grande quantité après l'URL. En gros, on n'a pas le droit de spammer avec juste une URL (peut-être qu'on veut juste partager un lien avec ami, tant pis). Par contre on peut spammer avec une URL et du texte bidon ! ça on a le droit.

En tout cas, ajouter ce texte bidon à la fin permet cet envoi. Ouf donc ! J'ai une séquence d'arrêt après la partie utile de mon texte, ce qui fait qu'à la réception cela ne va pas me gêner. Je continue néanmoins de trouver cette limitation inutile, décevante et incongrue.
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [R] Envoi d'URL avec _INetSmtpMail

#6

Message par Habibsbib »

Je remonte le sujet pour demander quelque chose ; est-il possible d'envoyer directement un contenu HTML avec cette fonction ? Si oui de quelle manière ?
Avatar du membre
Vins83
Membre émérite
Membre émérite
Messages : 220
Enregistré le : mer. 25 juil. 2007 17:43
Status : Hors ligne

Re: [R] Envoi d'URL avec _INetSmtpMail

#7

Message par Vins83 »

Je serais également intéressé, mais je ne trouve solution pour le moment ...
Quelqu'un a déjà tester ça ?

++ Vins
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [R] Envoi d'URL avec _INetSmtpMail

#8

Message par Habibsbib »

J'y suis arrivé en modifiant légèrement la fonction.
Voila le script :

Code : Tout sélectionner

Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance = "Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0, $HTML = 0)
    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If $HTML = 1 Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
            ConsoleWrite('@@ Debug(62) : $S_Files2Attach = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment($S_Files2Attach[$x])
            Else
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
                SetError(1)
                Return 0
            EndIf
        Next
    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
    If Number($IPPort) = 0 Then $IPPort = 25
    $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    If $s_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") = $s_Username
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    $objEmail.Configuration.Fields.Update
    Switch $s_Importance
        Case "High"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "High"
        Case "Normal"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Normal"
        Case "Low"
            $objEmail.Fields.Item("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    $objEmail.Send
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail = ""
EndFunc   ;==>_INetSmtpMailCom
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [R] Envoi d'URL avec _INetSmtpMail

#9

Message par Habibsbib »

Wow, pour X raison en relisant ce vieux topic j'ai ré-envoyé le message plus-haut vieux de deux ans, je ne croyais pas ça possible, ça doit être un espèce de bug.
Désolé !
Répondre