IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Erreur envoi Mail avec Delphi 10


Sujet :

Web & réseau Delphi

  1. #21
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Étrange, j'ai testé plusieurs fois (à différentes heures) orange sans aucun souci d'envoi

  2. #22
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 476
    Par défaut
    Bonjour Serge,

    avec quel port testes tu ? 25, 465 ou 587 ? (avec ou sans identifiant et Pswd ?

    A+
    Charly

  3. #23
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Exp : monMail@orange.fr
    Dest: MonMail@laposte.net
    Serveur smtp : smtp.orange.fr
    Port : 465
    identifiant : monMail@orange.fr
    Password : Mon Mot de Passe de Messagerie Orange
    useTLS oui

  4. #24
    Membre éclairé
    Avatar de Jlmat
    Homme Profil pro
    Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Inscrit en
    Avril 2008
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 339
    Par défaut
    C'est dommage, car ce n'est pas fiable et je vais abandonner l'idée d'envoyer des mails depuis ma petite application de type contact
    Ben, c'est quand même un problème, moi aussi, j'ai besoin de mettre cela dans mon appli de gestion associative...

    Peut-être faudrait-il tester avec un autre serveur que Orange?

    Il doit bien y avoir des professionnels de Delphi qui maitrisent ce sujet? Où est-ce secret Défense?

    Je continue de travailler sur le sujet... dès que j'ai un peu de temps... Peut-être chercher du côté de ceux qui maitrisent la norme, le protocole...


    A+

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Voilà mon dernier jus du même programme test
    Fichiers attachés Fichiers attachés

  6. #26
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 476
    Par défaut
    Merci beaucoup Serge,

    j'ai testé ce matin et aussi en début d'après midi :
    avec le port 465 en TSL cela fonctionne assez vite et bien. Il y a quand même parfois des cas ou le message ne part pas (assez rares)

    Je vais reprendre ton code dans mon appli (si tu le permet ?) et essayer aussi d'ajouter des Pj ...

    Merci encore

    A+
    Charly

  7. #27
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    (si tu le permet ?)
    Si je l'ai mis en partage, il n'y aucune raison que je ne le permette pas

  8. #28
    Membre éclairé
    Avatar de Jlmat
    Homme Profil pro
    Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Inscrit en
    Avril 2008
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 339
    Par défaut
    Merci les amis pour vos contributions!

    Je n'ai pas testé encore le dernier code de Sergio, mais je garde tout bien précieusement afin de comprendre pourquoi ça bloque chez moi!
    J'ai remarqué depuis le début de l'hiver, des problèmes avec ma messagerie Orange qui est très lente à envoyer, valider une option quand je m'en sers! Et d'ailleurs, la connexion de ma LiveBox coupe souvent!

    Peut-être est-ce dû à un temps d'attente trop long pour le protocole. Il faudrait que je téléphone à orange pour savoir ce qu'il en est?

    Bon WE
    A+
    jlmat

  9. #29
    Membre éclairé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Par défaut
    Bonjour,

    je mets le lien de cette discussion au cas où :

    https://www.developpez.net/forums/d1...ant-hyperlien/

    et un code qui fonctionne avec orange sous Delphi 7 et Indy10.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    procedure TFAlerte.SendMail;
    var
      MonTexte: string;
    begin
      cxmemo1.Lines.Clear;
      idSmtp1.Host := 'smtp.orange.fr';
      idsmtp1.Port := 25;
      IdMessage1.Clear;
      IdMessage1.From.Text := 'robot@domaine.fr';
      IdMessage1.ReplyTo.EMailAddresses := 'DeMail@orange.fr';
      IdMessage1.Recipients.EMailAddresses := 'AMail@orange.fr';
      IdMessage1.Date := Now;
      IdMessage1.Subject := 'TEST';
      idmessage1.ContentType := 'text/plain';
      MonTexte := 'tester les accents, rêvé, donné';
      MonTexte := UTF8Encode(MonTexte);
      idmessage1.Body.Text := MonTexte;
     
    //  idmessage1.Body.Text := '<a href="https://www.google.fr">CLICK ME</a>';
     
      try
        idSMTP1.Connect;
        idSMTP1.Send(idMessage1);
        idSMTP1.Disconnect;
        cxMemo1.Lines.Add('SMTP Ok , message envoyé');
      except
        cxMemo1.Lines.Add('Impossible de se connecter au serveur SMTP. E-mail non envoyé');
      end;
    end;
    @+

  10. #30
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 476
    Par défaut
    Merci Cantador,

    j'ai suivi le fil de cette discussion, mais comme jlmat, je cherchais à envoyer des mails avec D10.3 - ça marche maintenant assez bien, même si parfois j'ai encore des ratés. Je ne sais pas pourquoi.

    quand ça marche bien j'arrive à envoyer avec le port 25 sans TLS ou avec le port 465 avec TLS, et avec ou sans PJ.

    Pour Info, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    { ===================================================================== }
    procedure TF_Mail.Button4Click(Sender: TObject);
    Const
      NbMax = 3 ;  // Nombre maxi d'essai d'envois
    Var
      Nb     : Integer ;
      Ok     : Boolean ;
      Heure1 : TDateTime ;
      Heure2 : TDateTime ;
      Delta  : TDateTime ;
    begin
      // Il faut déposer plusieurs TLabel sur la fiche (  Lbl_Mess, LblThread, Lbl_Time)
      Nb := 0 ;
      Ok := False ;
      while ((not Ok) And (Nb < NbMax)) do
        Begin
          Heure1 := Time ;
          Nb := Nb + 1 ;
          Application.ProcessMessages ;
          Lbl_Nb.Caption := 'Essai n° '+ InttoStr(Nb) ;
          Application.ProcessMessages ;
     
          SMTPServer2   := edServeur.Text ;        // Adresse IP ou nom du serveur SMTP (ex : smtp.orange.fr)
          FromName2     := edNom.Text ;            // Nom de l'expéditeur  (facultatif)
          FromAddress2  := edSender.Text ;         // Adresse mail de l'expéditeur
          ToAddresses2  := edTo.Text ;             // Liste des adresses des destinataires séparés par des virgules
          CCAddresses2  := EdCC.Text ;             // Liste des adresses des destinataires en copie séparés par des virgules
          BCCAddresses2 := EdBCC.Text ;            // Liste des adresses des destinataires en copie cachée séparés par des virgules
          Port12        := StrToInt(EdPort.Text) ; // port Smtp pour l'envoi Ex : 25
          User12        := EdLogin.text ;          // Adresse de l'expéditeur enregistré sur le serveur SMTP ( = FromAdress en général)
          Pswd12        := EdPassword.text ;       // Mot de passe de cet expéditeur
          Subject2      := edObject.Text ;         // Objet du mail
          EmailBody2    := Memo.Text ;             // Corps du mail
          IsBodyHtml2   := False ;                 // texte en HTML ?
          Fichier2      := EdPJ.Text ;             // Fichier à mettre en PJ
     
          Ok := SendEmailIndy(
                  SMTPServer2,
                  FromName2,
                  FromAddress2,
                  ToAddresses2,
                  CCAddresses2,
                  BCCAddresses2,
                  Port12,
                  User12,
                  Pswd12,
                  Subject2,
                  EmailBody2,
                  IsBodyHtml2,
                  Fichier2) ;
          Heure2 := Time ;
          Delta  := Heure2 - Heure1 ;
          lbl_Time.Caption := 'Temps écoulé : '+ TimeToStr(Delta)+' (Essai précédent)' ;
        End;
      if Ok then
        Vcl.Dialogs.MessageDlg('Message envoyé - Essai : '+IntToStr(Nb), mtInformation,
          [mbOk], 0, mbOk)
      Else
        Vcl.Dialogs.MessageDlg('Message non envoyé - Essai : '+IntToStr(Nb), mtInformation,
          [mbOk], 0, mbOk) ;
    End ;
    { ===================================================================== }
    Function TF_Mail.SendEmailIndy(
        const SMTPServer: string;   // Adresse IP ou nom du serveur SMTP (ex : smtp.orange.fr)
        const FromName : String;    // Nom de l'expéditeur  (facultatif)
        const FromAddress: string;  // Adresse mail de l'expéditeur
        const ToAddresses: string;  // Liste des adresses des destinataires séparés par des virgules
        const CCAddresses: string;  // Liste des adresses des destinataires en copie séparés par des virgules
        const BCCAddresses: string; // Liste des adresses des destinataires en copie cachée séparés par des virgules
        const Port1  : Integer ;    // port Smtp pour l'envoi Ex : 25
        const User1  : String ;     // Adresse de l'expéditeur enregistré sur le serveur SMTP ( = FromAdress en général)
        const Pswd1  : String ;     // Mot de passe de cet expéditeur
        const Subject: string;      // Objet du mail
        const EmailBody: string;    // Corps du mail
        const IsBodyHtml: Boolean;  // texte en HTML ?
        const Fichier   : String ) : Boolean ; //  Fichier à mettre en PJ
    var
      SMTP: TIdSMTP;                   // Uses IdSmtp
      msg: TidMessage;                 // Uses IdMessage
      builder: TIdMessageBuilderHtml;  // Uses IdMessageBuilder
    //  IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
     
    Begin
      if Test2 then  Memo1.Clear ;
     
      Result := False ;
      LblThread.Caption := ' .... ' ;
      msg := TidMessage.Create(nil);
      try
        builder := TIdMessageBuilderHtml.Create;
     //   IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(Self);
     
        try
          if IsBodyHtml then
            begin
              builder.Html.Text := EmailBody;
              builder.HtmlCharSet := 'utf-8';
              builder.HtmlContentTransfer := 'quoted-printable';
            end
          Else
            begin
              builder.PlainText.Text := EmailBody;
              builder.PlainTextCharSet := 'utf-8';
              builder.PlainTextContentTransfer := 'quoted-printable';
            end;
          F_Mail.Lbl_Mess.Caption := 'Corps du message construit' ;
          Application.ProcessMessages ;
          if Fichier <> '' then
            begin
              builder.Attachments.Add(Fichier);
          F_Mail.Lbl_Mess.Caption := 'Fichier joint' ;
          Application.ProcessMessages ;
            end;
     
          builder.FillMessage(msg);
        finally
          builder.Free;
        end;
     
           F_Mail.Lbl_Mess.Caption := 'Fin du builder' ;
          Application.ProcessMessages ;
        msg.From.Name := FromName;
        msg.From.Address := FromAddress;
        msg.Subject := Subject;
     
        msg.Recipients.EmailAddresses := ToAddresses;
        msg.CCList.EmailAddresses := CCAddresses;
        msg.BccList.EmailAddresses := BCCAddresses;
     
        smtp := TIdSMTP.Create(nil);
        try
           SMTP.Host     := SMTPServer ;
           SMTP.Port     := Port1 ;
           SMTP.Username := User1 ;
           SMTP.Password := Pswd1 ;
           SMTP.AuthType := satDefault ;
     
     //     SMTP.IOHandler := IdSSLIOHandlerSocket;
           SMTP.IOHandler := IdSSLIOHandlerSocketOpenSSL1 ;
           if useTLS.Checked then
              begin
                SMTP.UseTLS:=utUseImplicitTLS; // 1
                SMTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
              end
            else
              begin
                SMTP.UseTLS:=utNoTLSSupport; // 0
              End ;
     
          SMTP.Connect;
          F_Mail.Lbl_Mess.Caption := 'Serveur SMTP connecté' ;
          Application.ProcessMessages ;
     
          try
            SMTP.Send(msg);
            LblThread.Caption := 'Le message à '+ToAddresses+' a été envoyé' ;
            Result := True ;
          F_Mail.Lbl_Mess.Caption := 'Message envoyé' ;
          Application.ProcessMessages ;
     
          except
            LblThread.Caption := 'Erreur : E-mail non envoyé' ;
          end;
           SMTP.Disconnect;
          except
           LblThread.Caption := 'Erreur : Impossible de se connecter au serveur SMTP';
          end;
     Except
       LblThread.Caption := 'Erreur : Impossible de créer le message';
     End ;
     // Ajout
    //      IdSSLIOHandlerSocket.free ;     //  J'ai enlevé le create car ça plante
                                            //  j'ai déposé le composant IdSSLIOHandlerSocketOpenSSL1 sur la fiche
                                            //  et la méthode onStatusInfoEx  est ci-dessous
    end;
    { ===================================================================== }
     procedure TF_Mail.IdSSLIOHandlerSocketOpenSSL1StatusInfoEx(ASender: TObject;
      const AsslSocket: PSSL; const AWhere, Aret: Integer; const AType,
      AMsg: string);
    begin
      // Test2 est une constante à True si on veux écrire dans Memo1
      if Test2  then memo1.lines.Add(AMsg);
    end;
    { ========================================================================== }
    A+
    Charly

  11. #31
    Membre éclairé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Par défaut
    merci Charly910,

    c'est le code que je voulais mettre au point..
    hélas, pour moi le IdMessageBuilder ne semble pas fonctionner sous D7
    j'ai tenté d'intégrer le .pas dans un .dpk de Indy, mais ça plante partout..

    @+

    cantador

  12. #32
    Membre éclairé
    Avatar de Jlmat
    Homme Profil pro
    Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Inscrit en
    Avril 2008
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 339
    Par défaut
    Oui merci Cantador, comme Charly, j'avais suivi vos échanges antérieurs. Mais comme je suis sur 10.3, je m'y mets à fond... Il faut que je m'habitue à l'interface et options... c'est un monstre ce 10.3, lol!
    Je vous tiens au courant dès que je serais parvenu à des résultats...

    A+

  13. #33
    Membre éclairé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Par défaut
    c'est un monstre ce 10.3, lol!
    oh oui !

  14. #34
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Tant que le sujet est ouvert, l'un de vous sait-il comment demander une confirmation d'affichage et de lecture par l'intermédiaire de Indy ?
    Et, sujet attenant : récupérer ces confirmations pour traitement ? Non pas que je ne sache pas comment récupérer les mails dans une boite mais savoir si ce type de message (ainsi que celui de non-délivrance) est particulier.
    J'avoue, je n'ai pas encore cherché, la codification de ce traitement est prévu pour la semaine prochaine mais si vous avez des infos, je prends

  15. #35
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 476
    Par défaut
    Bonjour Serge,

    j'ai trouvé ceci sur le net, mais je n'ai pas testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Accusé de réception
    if checkbox1.Checked then
      begin
        idmessage.ReceiptRecipient.Address:='Expediteur@provider.com';
        idmessage.Headers.Add('disposition-notification-to: <'+Expediteur@provider.com+'>');
      end;
    A+
    Charly

  16. #36
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 476
    Par défaut
    Bonjour,
    j'ai ajouté ceci à mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        msg.ReceiptRecipient.Address:=FromName;
        msg.Headers.Add('disposition-notification-to: <'+FromName+'>');
        msg.ReceiptRecipient.Text := 'Message reçu ---- ';
    Comme d'habitude, depuis le serveur smtp.wanadoo.fr, vers gmx.fr, en port 25 sans TLS ou en port 465 avec TLS, j'ai un message sur 5 environ qui part et arrive à destination.

    J'ai eu quand même 2 essais concluants. Si j'ouvre les messages reçus, j'ai bien le message qui demande si on doit envoyer une confirmation. Mais si je réponds Oui, un message m'informe que la confirmation d'envoi n'a pas pu être envoyée.

    Dommage, car si cela fonctionnait on pourrait trier les messages de confirmation avec la propriété ReceiptRecipient.Text

    A+
    Charly

  17. #37
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    En tout cas merci pour ces deux pistes intéressantes

    Comme d'habitude, depuis le serveur smtp.wanadoo.fr, vers gmx.fr, en port 25 sans TLS ou en port 465 avec TLS, j'ai un message sur 5 environ qui part et arrive à destination.
    wanadoo.fr existe encore
    as-tu vérifié la négociation avec le serveur via un intercepthandler ?

  18. #38
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 476
    Par défaut
    Oui, a priori le serveur smtp.wanadoo.fr existe encore ainsi que les adresses en wanadoo.fr

    pour le intercepthandler je ne sais pas comment faire. Mais j'utilise ton code avec les Hello, certificate, exchange, negotiation et autres bestioles du même genre, code qui fonctionne parfaitement et le serveur se connecte bien

    Sinon si je passe par la messagerie Orange le système de confirmation avec Gmx fonctionne bien

    A+
    Charly

  19. #39
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 476
    Par défaut
    Voici une version qui fonctionne de wanadoo.fr à Gmx.fr en TLS, port 465, avec un accusé de réception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    { ===================================================================== }
    Function TF_Mail.SendEmailIndy(
        const SMTPServer: string;   // Adresse IP ou nom du serveur SMTP (ex : smtp.orange.fr)
        const FromName : String;    // Nom de l'expéditeur  (facultatif)
        const FromAddress: string;  // Adresse mail de l'expéditeur
        const ToAddresses: string;  // Liste des adresses des destinataires séparés par des virgules
        const CCAddresses: string;  // Liste des adresses des destinataires en copie séparés par des virgules
        const BCCAddresses: string; // Liste des adresses des destinataires en copie cachée séparés par des virgules
        const Port1  : Integer ;    // port Smtp pour l'envoi Ex : 25
        const User1  : String ;     // Adresse de l'expéditeur enregistré sur le serveur SMTP ( = FromAdress en général)
        const Pswd1  : String ;     // Mot de passe de cet expéditeur
        const Subject: string;      // Objet du mail
        const EmailBody: string;    // Corps du mail
        const IsBodyHtml: Boolean;  // texte en HTML ?
        const Fichier   : String ) : Boolean ; //  Fichier à mettre en PJ
    var
      SMTP: TIdSMTP;                   // Uses IdSmtp
      msg: TidMessage;                 // Uses IdMessage
      builder: TIdMessageBuilderHtml;  // Uses IdMessageBuilder
    //  IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
     
    Begin
      if Test2 then  Memo1.Clear ;   //  mettre la constante Test2 à True pour afficher l'écho des commandes dans Memo1
     
      Result := False ;
      LblThread.Caption := ' .... ' ;              // C'est un Label
      msg := TidMessage.Create(nil);
      try
        builder := TIdMessageBuilderHtml.Create;
     //   IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(Self);
     
        try
          if IsBodyHtml then
            begin
              builder.Html.Text := EmailBody;
              builder.HtmlCharSet := 'utf-8';
              builder.HtmlContentTransfer := 'quoted-printable';
            end
          Else
            begin
              builder.PlainText.Text := EmailBody;
              builder.PlainTextCharSet := 'utf-8';
              builder.PlainTextContentTransfer := 'quoted-printable';
            end;
          F_Mail.Lbl_Mess.Caption := 'Corps du message construit' ;    // Autre Label
          Application.ProcessMessages ;
          if Fichier <> '' then
            begin
              builder.Attachments.Add(Fichier);
          F_Mail.Lbl_Mess.Caption := 'Fichier joint' ;   // Encore un Label !
          Application.ProcessMessages ;
            end;
     
          builder.FillMessage(msg);
        finally
          builder.Free;
        end;
     
           F_Mail.Lbl_Mess.Caption := 'Fin du builder' ;
          Application.ProcessMessages ;
        msg.From.Name := FromName;
        msg.From.Address := FromAddress;
        msg.Subject := Subject;
     
        msg.Recipients.EmailAddresses := ToAddresses;
        msg.CCList.EmailAddresses := CCAddresses;
        msg.BccList.EmailAddresses := BCCAddresses;
     
        msg.ReceiptRecipient.Address:=FromAddress;
        msg.Headers.Add('disposition-notification-to: '+FromAddress);
        msg.Headers.Add('Reply-To: '+FromAddress) ;
     //   msg.Headers.Add('X-Originating-IP: [MonAdresseIP]') ;      // Fonctionne mais pas indispensable
     //   msg.ReceiptRecipient.Text := 'Message reçu ---- ';         //  Ne fonctionne pas
     
        smtp := TIdSMTP.Create(nil);
        try
           SMTP.Host     := SMTPServer ;
           SMTP.Port     := Port1 ;
           SMTP.Username := User1 ;
           SMTP.Password := Pswd1 ;
           SMTP.AuthType := satDefault ;
     
     //     SMTP.IOHandler := IdSSLIOHandlerSocket;
           SMTP.IOHandler := IdSSLIOHandlerSocketOpenSSL1 ;
           if useTLS.Checked then
              begin
                SMTP.UseTLS:=utUseImplicitTLS; // 1
                SMTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
              end
            else
              begin
                SMTP.UseTLS:=utNoTLSSupport; // 0
              End ;
     
          SMTP.Connect;
          F_Mail.Lbl_Mess.Caption := 'Serveur SMTP connecté' ;
          Application.ProcessMessages ;
     
          try
            SMTP.Send(msg);
            LblThread.Caption := 'Le message à '+ToAddresses+' a été envoyé' ;
            Result := True ;
          F_Mail.Lbl_Mess.Caption := 'Message envoyé' ;
          Application.ProcessMessages ;
     
          except
            LblThread.Caption := 'Erreur : E-mail non envoyé' ;
          end;
           SMTP.Disconnect;
          except
           LblThread.Caption := 'Erreur : Impossible de se connecter au serveur SMTP';
          end;
     Except
       LblThread.Caption := 'Erreur : Impossible de créer le message';
     End ;
     // Ajout
    //      IdSSLIOHandlerSocket.free ;     //  J'ai enlevé le create car ça plante
                                            //  j'ai déposé le composant IdSSLIOHandlerSocketOpenSSL1 sur la fiche
                                            //  et la méthode onStatusInfoEx  est ci-dessous
    end;
    { ===================================================================== }
     procedure TF_Mail.IdSSLIOHandlerSocketOpenSSL1StatusInfoEx(ASender: TObject;
      const AsslSocket: PSSL; const AWhere, Aret: Integer; const AType,
      AMsg: string);
    begin
      // Test2 est une constante à True si on veux crire dans Memo1
      if Test2  then memo1.lines.Add(AMsg);
    end;
    { ========================================================================== }
    Pour retrouver le mail envoyé en accusé de réception, il faut tester l'objet :

    'Lu:' + objet du message initial

    A+
    Charly

  20. #40
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 569
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Pour retrouver le mail envoyé en accusé de réception, il faut tester l'objet :
    'Lu:' + objet du message initial
    Hum, est-ce que cela arrive toujours en français ce 'Lu'
    Bon, en tout cas je n'en suis pas encore là !

    Une seule chose me gêne je ne vois pas la liaison entre le MessageBuilder et le IdMessage (mais je n'ai fait qu'un survol)

Discussions similaires

  1. [Delphi 7] Envoi mail avec Delphi
    Par Oncle_Pete dans le forum Web & réseau
    Réponses: 6
    Dernier message: 06/05/2012, 11h30
  2. erreur envoi mail avec CDO
    Par bambino13 dans le forum ASP
    Réponses: 2
    Dernier message: 26/08/2009, 16h19
  3. Erreur envoi mail avec phpmailer (fichier joint)
    Par rhadien dans le forum Langage
    Réponses: 1
    Dernier message: 02/07/2008, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo