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 :

mail et SMTP avec Delphi


Sujet :

Web & réseau Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Août 2003
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 207
    Points : 91
    Points
    91
    Par défaut mail et SMTP avec Delphi
    Bonjour à tous,

    A partir des informations trouvée sur le forum, j'essaie de mettre en application le code suivant :
    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 TForm4.Button2Click(Sender: TObject); 
    var 
      IdMessage: TIdMessage; 
      IdSMTP: TIdSMTP; 
    begin 
      IdMessage := TIdMessage.Create(nil); 
      IdMessage.ContentType := 'multipart/alternative'; 
      IdMessage.From.Address := 'exp@free.fr'; 
     
      IdMessage.ReplyTo.Add.Address := 'exp@free.fr'; 
      IdMessage.Recipients.Add.Address := 'dest@free.fr' ; 
      IdMessage.Subject := 'Sujet du message'; 
      IdMessage.Body.Text := memo1.Text;
     
      IdSMTP := TIdSMTP.Create(nil) ; 
      IdSMTP.Port := 25; 
      IdSMTP.Host := 'smtp.free.fr'; 
      Try 
        Try 
          IdSMTP.Connect; 
          IdSMTP.Send(IdMessage); 
        except 
          on e: exception do MessageDlg(e.Message, mtError, [mbOK], 0); 
        end; 
      finally 
        IdSMTP.Disconnect; 
        IdSMTP.Free; 
        IdMessage.Free; 
      end; 
    end;

    Cela ne marche pas, j'ai essayé en ajoutant avant le IdSMTP.Connect;
    les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       IdSMTP.UserName := 'mylogin';
       IdSMTP.PassWord := 'mypwd';
    A priori le IdSMTP.Connect se réalise correctement, aucune erreur ne s'affiche mais le message n'arrive jamais à son destinataire.

    Qu' est ce que je fais de mal ?

    Merci d'avance pour vos réponses.
    Wilco

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Salut, ayant programmé un client mail dont les sources sont dispo librement, j'ai aussi rencontré ce genre de probleme et il peut avoir plusieurs causes :
    -Tu n'utilises pas la bonne adresse SMTP (tu le sais sûrement mais tu dois utiliser une adresse correspondante a ton FAI)
    -Tu n'as peut etre pas besoin de t'identifier auprés de son serveur SMTP, je ne sais pas ce que ça fait si on s'identifie alors qu'on n'a pas besoin.
    Il y a peut etre d'autres causes, là je n'en trouve pas d'autres... Sinon, tu utilise quelle version d'indy ?
    Si tu utilises la version 9, tu peux aller télécharger les sources de mon client mail a cette adresse :
    www.website.bluesourcesproject.info
    le projet en question se nomme Neo-Mail, et un conseil, si c'ets la version 1.2 qui est disponnible, attends un peu, la version 1.3 sortira bientot...
    Voilà, j'espere t'avoir aidé, @ +

  3. #3
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    moi j'utilise le composant smapi component suite (il me semble que c'est ce nom là) de winsoft et ça marche super bien et c'est supersimple et c'est pas cher...

    il passe par le client mapi par défaut.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     IdMessage.ContentType := 'multipart/alternative';
    Le problème vient peut être de la, essai avec le ContentType par défaut ou le text/plain car autant c'est free qui n'accepte pas ce format de mail.

  5. #5
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut Re: mail et SMTP avec Delphi
    Citation Envoyé par Wilco
    Bonjour à tous,

    A partir des informations trouvée sur le forum, j'essaie de mettre en application le code suivant :
    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 TForm4.Button2Click(Sender: TObject); 
    var 
      IdMessage: TIdMessage; 
      IdSMTP: TIdSMTP; 
    begin 
      IdMessage := TIdMessage.Create(nil); 
      IdMessage.ContentType := 'multipart/alternative'; 
      IdMessage.From.Address := 'exp@free.fr'; 
     
      IdMessage.ReplyTo.Add.Address := 'exp@free.fr'; 
      IdMessage.Recipients.Add.Address := 'dest@free.fr' ; 
      IdMessage.Subject := 'Sujet du message'; 
      IdMessage.Body.Text := memo1.Text;
     
      IdSMTP := TIdSMTP.Create(nil) ; 
      IdSMTP.Port := 25; 
      IdSMTP.Host := 'smtp.free.fr'; 
      Try 
        Try 
          IdSMTP.Connect; 
          IdSMTP.Send(IdMessage); 
        except 
          on e: exception do MessageDlg(e.Message, mtError, [mbOK], 0); 
        end; 
      finally 
        IdSMTP.Disconnect; 
        IdSMTP.Free; 
        IdMessage.Free; 
      end; 
    end;

    Cela ne marche pas, j'ai essayé en ajoutant avant le IdSMTP.Connect;
    les lignes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       IdSMTP.UserName := 'mylogin';
       IdSMTP.PassWord := 'mypwd';
    A priori le IdSMTP.Connect se réalise correctement, aucune erreur ne s'affiche mais le message n'arrive jamais à son destinataire.

    Qu' est ce que je fais de mal ?

    Merci d'avance pour vos réponses.
    Wilco
    Salut!

    J'utilise aussi la classe TIdSMTP et j'ai un problème semblable quand je ne donne pas une adresse de retour valide pour le SMTP spécifié. Il s'agit d'une sécurité du SMTP qui s'assure que ce n'est pas du spam qui passe et bien un vrai courriel.

    Est-ce que "exp@free.fr" existe vraiment sur le serveur "free.fr" ? As-tu essayé avec un autre SMTP et une autre adresse de retour ?

    Bon dev !

    - Slimjoe

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    En utilisant le code de la FAQ Delphi j'avais le même problème. Je l'ai résolu avec ce code adapté de http://delphipage.free.fr/indyexemple2.html

    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
     
    var
      IdMessage: TIdMessage;
      IdSMTP: TIdSMTP;
      Message: TStrings;
     
    begin
    IdMessage := TIdMessage.Create(nil); //création dynamique du composant
    IdMessage.Clear; //Efface l'entête et le corps du message
    IdMessage.From.Text := 'adresse mail1';
    IdMessage.ReplyTo.EMailAddresses := 'adresse mail1';
    IdMessage.Recipients.EMailAddresses := 'adresse mail2';
    IdMessage.Date:=Date; //Date de l'envoi du message
    IdMessage.Subject := 'Test des envoies de mail via Delphi';
    IdMessage.Priority := mpNormal; //Priorité du message
    //if not (Edit3.Text='') then TIdAttachment.Create(IdMessage.MessageParts,Edit3.Text); //Attache le fichier
    //IdMessage.Body.Assign(Memo1.Lines); //Corps du message
    //Connexion au serveur smtp
    IdSMTP := TIdSMTP.Create(nil) ; //Création dynamique du composant
    //IdSMTP1.AuthenticationType:=atLogin; //Type d'authentification
    IdSMTP.AuthenticationType:=atNone; //Type d'authentification
    IdSMTP.Host:='smtp.free.fr'; //Hôte (par exemple pour Free : smtp.free.fr)
    IdSMTP.Port:=25; //Port (par exemple pour Free : 25)
    //IdSMTP1.UserName:='xxxx'; //Nom d'utilisateur
    //IdSMTP1.Password:='xxxx'; //Mot de passe
    IdSMTP.Connect;
    try
     IdSMTP.Send(IdMessage);
    finally
     IdSMTP.Disconnect;
     IdSMTP.Free;
     IdMessage.Free;
    end;
     
    end;
    Si ça ne passe pas il faut essayer de modifier le sujet qui peut vite être considéré comme du spam.

  7. #7
    Membre habitué Avatar de Patrick25300
    Homme Profil pro
    Retraité en technicien de maintenance et méthodes
    Inscrit en
    Février 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Retraité en technicien de maintenance et méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 153
    Points : 134
    Points
    134
    Par défaut
    Salut tout le monde
    Voici ce que j'utilise, certaines parties sont en commantaire.
    Je mets ce code tel quel, il fonctionne bien

    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
     
    unit UnitEmail;
     
    //Programme par Yoann
    //http://delphipage.free.fr/
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
      IdTCPClient, IdMessageClient, IdSMTP, IdExplicitTLSClientServerBase, IdSMTPBase,
      IdAttachmentFile, IDAttachment, JvExStdCtrls, JvRichEdit, RxRichEd, ComCtrls, OleCtrls, SHDocVw,idtext;
     
    type
      TFormEmail = class(TForm)
        GroupBox1: TGroupBox;
        GroupBox2: TGroupBox;
        GroupBox3: TGroupBox;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        EditExpediteur: TEdit;
        EditDestinataire: TEdit;
        EditAttachement: TEdit;
        EditSujet: TEdit;
        Memo1: TMemo;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        IdSMTP1: TIdSMTP;
        IdMessage1: TIdMessage;
        OpenDialog1: TOpenDialog;
        EditEnCommunication: TEdit;
        Label9: TLabel;
        WebBrowser1: TWebBrowser;
        procedure Button3Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      FormEmail: TFormEmail;
     
    implementation
     
    uses
    UnitResource, UnitPetitesRoutines;
     
    {$R *.DFM}
     
     
    procedure TFormEmail.Button3Click(Sender: TObject);
    begin
    Close; //Ferme le programme
    end;
     
    procedure TFormEmail.Button1Click(Sender: TObject);
    begin
    if OpenDialog1.Execute then
    EditAttachement.Text:=OpenDialog1.FileName; //Edit affiche le fichier choisit
    end;
     
     
     
     
     
    procedure TFormEmail.Button2Click(Sender: TObject);
    Var
    Message: TStrings;
    Attachement : TIDAttachment;
    IDText1 : TiDText;
    IDText2 : TiDText;
    begin
        Screen.Cursor:=crHourGlass; //Curseur sablier
        IdMessage1.Clear; //Efface l'entête et le corps du message
        IdMessage1.From.Text :=EditExpediteur.Text; //Adresse email de l'expediteur
        IdMessage1.ReplyTo.EMailAddresses:=EditExpediteur.Text; //Adresse email où le destinataire pourra répondre
        IdMessage1.Recipients.EMailAddresses:=EditDestinataire.Text; //Adresse email du destinataire
        IdMessage1.CCList.EMailAddresses:=EditEnCommunication.Text;
        //IdMessage1.ContentDisposition
        //IdMessage1.contentType :='multipart/alternative';
        IdMessage1.contentType :='multipart/mixed';
        IdMessage1.Date:=Date; //Date de l'envoi du message
        IdMessage1.Subject:=EditSujet.Text; //Sujet du message
        IdMessage1.Priority:=mpNormal; //Priorité du message
        IdMessage1.Organization:=_Ident;//EditUserName.text;//Nom d'utilisateur, s'identifier, anti-spam
     
     
        memo1.Lines.LoadFromFile(Dossier+'trames\Cde.html'); //Corps du message
     
     
        Message := memo1.lines;
     
        //Ici on va créer les différentes parties du message
        //au cas où le client ne gère pas les messages HTML
    //    With TIdText.create(IdMessage1.Messageparts, Message) do
    //    begin
    //    ContentType := 'Text/plain';
    //    ContentTransfer := 'quoted-printable';
    //    Body.insert(0, 'Ce message est un message HTML. Configurez votre client de courrier électronique');
    //    end;
     
     
    (* en principe la partie ci-dessous devrait être utiliée *)
     
    //    IdText1 := TIdText.create(IdMessage1.Messageparts, Message);
    //    IdText1.ContentType := 'Text/plain';
    //    IdText1.ContentTransfer := 'quoted-printable';
    //    IdText1.Body.insert(0, 'Ce message est un message HTML. Configurez votre client de courrier électronique');
     
     
        IdText2 := TIdText.create(IdMessage1.Messageparts, Message);
        IdText2.ContentType := 'Text/html; charset=iso-8859-1';
        IdText2.ContentTransfer := 'quoted-printable';
     
     
    // indy version 10, ces 5 lignes inclu une image (logo) dans le fichier Html
    // instruction dans le fichier Html  <img src="cid:logo.jpg">
    //            Attachement :=  TidAttachmentFile.create(IdMessage1.MessageParts,Dossier+'trames\logo.jpg');
    //            Attachement.ContentType := 'image/jpg';
    //            Attachement.ContentID:= 'toto'; // valeurs particulières ContentID sont arbitraires,ils sont tous uniques
    //            Attachement.ContentDisposition := 'inline';
    //            Attachement.FileName := 'logo.jpg';
     
     
     
    if not (EditAttachement.Text='') then  TIdAttachmentFile.Create(IdMessage1.MessageParts,EditAttachement.Text); //Attache le fichier
     
        //Connexion au serveur smtp Indy10, vu sur Internet
        IdSMTP1.AuthType:=atDefault;
        IdSMTP1.Host:=_Host;           //EditHost.text;//'smtp.free.fr'; //Hôte (par exemple pour Free : smtp.free.fr)
        IdSMTP1.Port:=StrToInt(_Port); //25; //Port (par exemple pour Free : 25) Port (par exemple 587 pour gmail , 25 pour yahoo, 25 
     
    pour free)
        IdSMTP1.UserName:=_Ident;      //EditUserName.text;//Nom d'utilisateur
        IdSMTP1.Password:=_Wordpass;   //EditPassWord.text;//Mot de passe
        try
          try
            IdSMTP1.Connect; //Connexion
            IdSMTP1.Send(IdMessage1); //Envoi du message
          except
            on e:exception do MessageDlg(e.Message, mtError, [mbOK], 0);
          end;
        finally
        IdSMTP1.Disconnect; //Déconnexion
        end;
        Screen.Cursor:=crDefault; //Curseur par défaut
    end;
    end.

  8. #8
    Membre averti Avatar de solo190
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 412
    Points : 321
    Points
    321
    Par défaut mail delphi
    je viens de faire un test, mais mail vont sa problème, j'ai mis le password et le mon de mon compte en dur

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 669
    Points : 25 473
    Points
    25 473
    Par défaut
    Ce n'est pas bien de déterrer un vieux sujets, mais tu n'es pas le 1er !

    Un Message d'Erreur à l'Envoie ? Exception ?

    ton server SMTP est indépendant (gmail, hotmail...) ?
    ton server SMTP est-il celui de ton FAI ou d'un autre FAI ?
    ce serveur accepte-t-il le SMTP provenant d'un autre FAI ?

    as-tu ajouté une adresse d'expéditeur ?
    As-tu reçu un message de non délivrance ?

Discussions similaires

  1. [AC-2007] Envoi mail via smtp avec pièce jointe
    Par zibi7 dans le forum Contribuez
    Réponses: 4
    Dernier message: 05/08/2009, 16h43
  2. Envoyé un mail avec Delphi 2007 et Windows Mail
    Par rivierebruno22 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 03/08/2007, 10h08
  3. [Mail] pb smtp avec fonction mail
    Par xtofer dans le forum Langage
    Réponses: 1
    Dernier message: 13/10/2006, 11h04
  4. [Wamp] mail en local avec SMTP de cegetel?
    Par Death83 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 02/03/2006, 21h34
  5. envoyer mail avec delphi
    Par Seb4657 dans le forum Composants VCL
    Réponses: 18
    Dernier message: 02/01/2006, 14h28

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