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 :

Envoyer un mail effectivement avec Delphi 7


Sujet :

Web & réseau Delphi

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut Envoyer un mail effectivement avec Delphi 7
    Bonjour à tous,

    Bien, je suppose que l'on vous a posé de nombreuses fois la question et je ne sais pas si je suis au bon endroit, mais il faut bien se lancer.

    Voilà mon blème :

    J'ai réalisé une application qui nécessite l'envoi de mails. J'ai juste besoin d'adresser de simples mails sans pièce jointe.
    Je me suis donc lancé dans un ShellExecute.

    Mon idée est d'utiliser ThunderBird et je sais que la solution existe depuis pas mal de temps.
    Mais les solutions que j'ai trouvées fonctionnent bien sauf que ça ouvre la fenêtre de saisie d'envoi d'un mail, rempli sous ThunderBird, et rien d'autre ne se produit.
    Mes paramètres d'envoi sont tous présents mais l'envoi ne se produit pas.

    Voici ma procédure :

    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      fichier     : string;
      parametres  : string;
      adresse     : string;
      sujet       : string;
      msg         : string;
      info : PAnsiChar;
    begin
      sujet := 'Envoi de commande';
      msg := 'Test Envoi de commande.';
      adresse := 'monadressemail';
      parametres := 'mailto:' + adresse +'?subject=' + sujet + '&body=' + msg;
      ShellExecute(Handle,'open', Pchar(parametres), nil, nil, SW_SHOWDEFAULT);
    end;
    Or moi ce que je veux c'est que mon programme l'adresse effectivement.
    Il me faudrait donc juste envoyer au handle de la fenêtre ThunderBird une simple combinaison de touches "CTRL+ENTER" pour valider l'envoi.

    Quelqu'un a-t-il une solution ?

    Merci par avance.

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par ARAKIS_2 Voir le message
    Bien, je suppose que l'on vous a posé de nombreuses fois la question et je ne sais pas si je suis au bon endroit, mais il faut bien se lancer.
    Quant à moi, je constate que vous depuis 2007, vous n'avez pas assimilé les règles d'utilisation des forums : pas de balise [ CODE ] [ /CODE ] pour le code présenté, pas de lecture de la , pas de

    Donc reprenez cette question de la FAQ : http://delphi.developpez.com/faq/?pa...ail-par-defaut

    Etudiez les paramètres de la fonction MapiSendMail en consultant l'unité mapi.pas ou en consultant le site de Microsoft : https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
    Vous verrez qu'en adaptant le code fourni dans la FAQ (suppression du paramètre MAPI_DIALOG), vous obtiendrez une solution opérationnelle à votre problème !

    Et si vous avez une version de Delphi XE2 ou ultérieure, vous devrez modifier le type de certains paramètres de String vers AnsiString et PChar vers PAnsiChar.
    Philippe.

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par Ph. B. Voir le message
    Quant à moi, je constate que vous depuis 2007, vous n'avez pas assimilé les règles d'utilisation des forums : pas de balise [ CODE ] [ /CODE ]
    et j'en rajoute une couche , quoique j'ai modifié le message pour les Quotes

    Et si vous avez une version de Delphi XE2 ou ultérieure, vous devrez modifier le type de certains paramètres de String vers AnsiString et PChar vers PAnsiChar.
    il était indiqué D7 mais c'est, je pense, à partir de D2009 qu'il faut opérer ces changements
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut Envoi de mail
    Bonjour,

    Ok les gars -> reçu fort et clair. Je vous en remercie.

    Cela fait un petit moment que je suis, effectivement, inscrit sur "Developpez.com"
    mais je passe très rarement. Du moins pas comme vous l'entendez.
    Je suis plutôt un lecteur des nouveautés et en tant que vieux crabe
    accordez moi au moins un peu de sénilité.

    Je vais éplucher les liens que vous m'avez indiqués.

    Merci encore.

    Cordialement,
    P.S : Comme je reste fidèle à Borland, j'ai Delphi 7. Je sais ce n'est pas sérieux mais je n'ai pas les moyens non plus. Ceci explique cela.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut Envoi de mail
    Me revoilou les gars,

    Au fait, j'ai trouvé une petite erreur de frappe pour la fonction décrite dans la page
    que présente ce lien : http://delphi.developpez.com/faq/?pa...ail-par-defaut.
    Sans compter qu'il n'est mentionné nul part qu'il faut utiliser l'unité Mapi pour que cette fonction soit opérationnelle.
    Mais je suppose que c'était pour m'inciter à chercher. Vous voyez je l'ai fait.
    Voici le programme intitulé "Comment envoyer un e-mail avec le client mail par défaut ?" et l'erreur juste après :

    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
    function SendMail(const Subject, MessageText, MailFromName, MailFromAddress, MailToName,
    MailToAddress: String; const attachments:   array of String; WinHandle: THandle = 0): boolean;  
    
    var  
      MAPIError: DWord;  
      MapiMessage: TMapiMessage;  
      Originator, Recipient: TMapiRecipDesc;  
      Files, FilesTmp: PMapiFileDesc;  
      FilesCount: Integer;  
    begin  
      FillChar(MapiMessage, Sizeof(TMapiMessage), 0);  
      MapiMessage.lpszSubject := PChar(Subject);  
      MapiMessage.lpszNoteText := PChar(MessageText);  
      FillChar(Originator, Sizeof(TMapiRecipDesc), 0);  
      Originator.lpszName := PChar(MailFromName);  
      Originator.lpszAddress := PChar(MailFromAddress);  
      MapiMessage.lpOriginator := @Originator;  
      MapiMessage.nRecipCount := 1;  
      FillChar(Recipient, Sizeof(TMapiRecipDesc), 0);  
      Recipient.ulRecipClass := MAPI_TO;  
      Recipient.lpszName := PChar(MailToName);  
      Recipient.lpszAddress := PChar(MailToAddress);  
      MapiMessage.lpRecips := @Recipient;  
      MapiMessage.nFileCount := High(attachments) - Low(attachments) + 1;  
      Files := AllocMem(SizeOf(TMapiFileDesc) * MapiMessage.nFileCount);  
      MapiMessage.lpFiles := Files;  
      FilesTmp := Files;  
      for FilesCount := Low(attachments) to High(attachments) do  
      begin  
        FilesTmp.nPosition := $FFFFFFFF;  
        FilesTmp.lpszPathName := PChar(attchments[FilesCount]);  
        Inc(FilesTmp)  
      end;  
      try  
        MAPIError := MapiSendMail(0, 0,  
          MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);  
        result:= MAPIError = 0;  
      finally  
        FreeMem(Files)  
      end  
    end;
    En effet, pour que ça fonctionne il faut lire (ligne en rouge) - il manque le "a" de attachments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        FilesTmp.lpszPathName := PChar(attachments[FilesCount]);
    Le blème c'est que c'est rigoureusement identique à Thunderbird : je me retrouve avec une fenêtre ouverte.
    Mais je n'ai pas encore étudié le petit programme juste au-dessus : Comment envoyer et/ou recevoir des e-mails ?
    Si je trouve, je vous promet de venir mettre ma solution.

    A plus les gars.

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    tu n'as qu'à utiliser la fonction d'envoi de mail de la bibliothèque Indy (si je me souviens bien elle est fournie avec D7)
    ainsi tu ne verras pas le logiciel de messagerie.

    Des exemples d'envoi de mail avec INDY se trouvent facilement soit dans ce forum, soit dans la doc fournie avec D7, soit sur Google, je suis trop mode vacances pour mettre un exemple de code , très proche de celui fait avec MAPI d'ailleurs
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre actif
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 105
    Points : 235
    Points
    235
    Par défaut
    Salut à toous,
    Dans mon vieux D5, j'ai un contrôle TNSMTP (onglet FastNet) qui permet d'envoyer simplement des mails.
    Il y a aussi un exemple d'une form qui envoie des mails, repertoire DelphiX\Demos\FastNet\SMTP.
    As-tu cet onglet et ce contrôle dans ton Delphi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.ButtonSend(Sender: TObject);
    begin
      NMSMTP1.PostMessage.FromAddress := Edit6.Text;       
      NMSMTP1.PostMessage.FromName := Edit5.Text;          
      NMSMTP1.PostMessage.Subject := Edit10.Text;           
      NMSMTP1.PostMessage.ToAddress.Add(Edit7.Text);     
      NMSMTP1.PostMessage.ToBlindCarbonCopy.Add(Edit9.Text);  
      NMSMTP1.PostMessage.ToCarbonCopy.Add(Edit8.Text);        
      NMSMTP1.PostMessage.Attachments.AddStrings(Listbox1.Items);
      NMSMTP1.PostMessage.Body.Assign(Memo1.Lines);
      NMSMTP1.SendMail;
    end;
    C'est tout facile d'envoyer des mails.
    solilog

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut send a mail
    Salut, de nouveau, les gars

    Merci à toi Mode Eh Rateur SergioMaster (moi je suis en mode je bosse à donf mais ça ne me pose pas de blème) et à toi aussi Solilog.
    Ça fait toujours plaisir de voir se créer une team de discussion.
    Ça prouve qu'il y a encore de l'humain derrière ces foutus bécanes (humour).

    Solilog je garde malgré tout ton précieux conseil même si j'ai lu ici :

    http://delphi.developpez.com/faq/?pa...oyer-un-e-mail

    que FastNet pour Delphi 7 était obsolète, ainsi que sur mon book Delphi 7, et je n'ai pas le répertoire que tu indiques (certainement pour la raison invoquée).

    Mais ça ne fait rien les gars, car ça m'a fait cogiter (ouaih! y avait presque un œuf qui pouvait y cuire - non je déc....) et j'ai trouvé une solution plus économique pour mon Prg.
    Je m'explique : mon application reçoit des commandes sur un serveur par connexion à distance.
    Les infos sont sauvegardées dans des tables MySQL sur le serveur.

    Alors je me suis dit : pourquoi ne pas ajouter un champ booléen (0/1) nommé par exemple "vu" (pour chaque commande bien sûr) et un simple timer qui contrôle régulièrement l'état de mes commandes ?
    Ainsi quand, grâce à une sélection par tri en SQL, je trouve des commandes non vues je les affiche et je bascule aussi sec l'état du flag "vu".
    Ce qui limite, bien sûr, les prochains résultats de ma requête aussi. Mais ça c'est évident.
    Ainsi je me dédouane du mail et je rends ma solution plus économique (pas d'adresse mail et tout le tintouin).

    Je sais ce que vous pensez : mais y en a combien d'infos qui arrivent ? Ton Timer risque très vite d'être submergé ?
    Justement elles ne se bousculeront pas au portillon : ces commandes. D'où cette éventualité.

    Mais je vous rassure je ne lâche pas mon os à ronger.
    J'ai d'ailleurs une piste. A mon sens la raison de cette non connexion c'est qu'elle est en SSL et j'ai bien les DLL mais je n'ai pas ces foutus fichiers .cer. C'est quand même plus simple en PHP !!!

    Merci les gars.
    A vous renvoyer l’ascenseur un jour, je l'espère.
    P.S : c'est vrai que c'est plus joli ainsi : l'affichage. J'ai fait un peu le flème. Encore Mille excuses.

  9. #9
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    les balises QUOTE et /QUOTE sont faites pour re-citer quelqu'un d'autre ou en règle plus générale un texte d'un autre message, (d'ailleurs on peut même y ajouter le nom de la personne qui l'a écrite QUOTE=nom) pas pour encadrer ton texte

    a part ce détail
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut Envoyer effectivement un mail avec une connexion SSL dans une application Delphi
    Bonjour à tous - Me voilà de retour et pas les mains vides,

    Il y a peu de temps, très précisément le 27/07 de cette année, j'ai ouvert une discussion sur l'envoi de mail avec Delphi.
    Question, comme chacun sait, qui a déjà fait couler beaucoup d'encre.
    J'avais promis que si je trouvais une solution, je la partagerais. Et bien ce sera, aujourd'hui, chose faite.

    Parenthèse : avant d'ouvrir les hostilités je tiens à préciser que cet exemple concerne un compte yahoo avec connexion SSL mais je pense qu'en suivant les explications claires (certes en anglais) de ce lien https://www.emailarchitect.net/easendmail/ex/d/5.aspx vous saurez l'adapter à vos besoins (rien de bien compliqué). Et pour clore cette parenthèse, je précise que (contrairement à certains) j'ai testé cet exemple et qu'il est fonctionnel (sur Delphi 7).

    Avant de faire ou d'écrire quoi que ce soit il vous faut télécharger EASendMail Installer. Vous trouverez le lien sur la page que j'ai ci-dessus indiquée.

    En clair : après avoir téléchargé et exécuté l'installation vous disposerez d'une unité EASendMailObjLib_TLB.pas, localisable ici "C:\Program Files\EASendMail\Samples_Delphi\simple.delphi" ou ici "C:\Program Files (x86)\EASendMail\Samples_Delphi\simple.delphi", à copier manuellement dans le répertoire de votre projet et à intégrer dans le uses de votre projet. Il y a aussi la possibilité de l'installer dans votre projet via la rubrique du menu de L'EDI Delphi : Projet -> Importer une bibliothèque de type -> sélectionner dans la fenêtre : EASendMailObj ActiveX Object et créer une unité.

    Dans l'exemple, que je n'ai fait que copier et traduire, il faut ajouter un simple composant TButton dans votre forme. Le reste c'est de la programmation et vous verrez que c'est très simple. Adieu prises de tête avec les composants Indy ou leur version, voir les fonctions propres à Windows de win32. C'est hyper simple comme sous PHP.

    Bon trêve de discussion. Passons aux choses sérieuses. Voici le code (je vous préviens je code à l'ancienne) :

    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
     
    unit Unit1;
     
    interface
     
    uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, EASendMailObjLib_TLB, Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      oSmtp : TMail;
    begin
      oSmtp := TMail.Create(Application);
      oSmtp.LicenseCode := 'TryIt';
     
      // Votre adresse mail Yahoo
      oSmtp.FromAddr := 'myid@yahoo.com';
     
      // L'adresse mail de votre destinataire
      oSmtp.AddRecipientEx( 'support@emailarchitect.net', 0);
     
      // Mettre ici le contenu du sujet
      oSmtp.Subject := 'Simple email transmis depuis un compte Yahoo';
     
      // Mettre ici le corps
      oSmtp.BodyText := 'Ceci est un test d''email depuis une application Delphi utilisant un compte Yahoo.';
     
      // Adresse du serveur SMPT Yahoo
      oSmtp.ServerAddr := 'smtp.mail.yahoo.com';
     
      // Parce que Yahoo ouvre son serveur SMTP sur le port 465 pour une connexion SSL directe,
      // nous initialisons le port 465.
      oSmtp.ServerPort := 465;
     
      // Détection automatique SSL/TLS
      oSmtp.SSL_init();
     
      // Username et mot de passe du compte Yahoo utilisé
      oSmtp.UserName := 'myid@yahoo.com';
      oSmtp.Password := 'votremotdepasse';
      ShowMessage( 'Envoi du mail ...' );
     
      // Si le mail a bien été adressé
      if oSmtp.SendMail() = 0 then ShowMessage( 'Votre mail a été transmis avec succès!' )
      // Dans le cas contraire on affiche le numéro de l'erreur  
      else ShowMessage( 'Problème d''envoi d''un mail dû à l''erreur suivante : ' + oSmtp.GetLastErrDescription());
    end;
     
    end.
    J'espère que ce programme aidera nombre d'entre vous qui comme moi se sont tirés des balles afin de comprendre pourquoi leur mail n'arrivait pas à destination. Sachant maintenant que la plupart des messageries fonctionnent en SSL (sécurité des mails) d'où le pourquoi du comment !!!

    Bonne continuation les gars et respirez un peu. Y a pas que la prog ...

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut Mail avec connexion SSL
    Il y a un détail que je n'ai pas précisé, car découvert après. CETTE BIBLIOTHÈQUE EST UN SHAREWARE (≈ 100 $ soit 90 €)

  12. #12
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,

    Sans vouloir non plus ouvrir les hostilités, je vais émettre quelques réserves...

    Citation Envoyé par ARAKIS_2 Voir le message
    Adieu prises de tête avec les composants Indy ou leur version, voir les fonctions propres à Windows de win32.
    Je ne vois pas trop en quoi installer un ActiveX serait moins prise de tête qu'installer les composants Indy...

    Citation Envoyé par ARAKIS_2 Voir le message
    J'espère que ce programme aidera nombre d'entre vous qui comme moi se sont tirés des balles afin de comprendre pourquoi leur mail n'arrivait pas à destination.
    Eh bien justement, je ne suis pas sur que cela soit la meilleure solution... d'autant plus pour comprendre pourquoi cela pourrait ne pas fonctionner...

    Citation Envoyé par ARAKIS_2 Voir le message
    Sachant maintenant que la plupart des messageries fonctionnent en SSL (sécurité des mails) d'où le pourquoi du comment !!!
    Disons que maintenant les messageries proposent des fonctionnalités de communication plus sécurisés, mais toutes n'en font pas un prérequis comme yahoo...

    Cela dit, votre solution qui a le mérite de fonctionner me pose donc quelques problèmes :
    1. Elle nécessite un ActiveX dont vous ne disposez pas des sources (quid des fonctionnalités cachées ? quid du futur et des évolutions ?)
    2. Elle nécessite l'installation de cet ActiveX avec votre application (problème d'installation, de paramétrage, de sécurité)
    3. Elle a un coût (peut-être négligeable pour un professionnel -quoique sans source-, mais pas pour un particulier)

    Ce n'est donc pas AMHA, la meilleure solution. Utiliser Indy quoi qu'on puisse dire de cette bibliothèque aurait été plus pertinent.

    Dans votre cas d'envoi de mails simples, on aurait pu écrire avec les composants de la suite Indy 10 le code suivant qui a le même niveau de sureté que le votre ! :
    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
    procedure TForm1.SendMail;
    var
      IdMsg: TIdMessage;                          // Unité IdMessage
      IdIOHandler: TIdSSLIOHandlerSocketOpenSSL;  // Unité IdSSLOpenSSL
      IdSmtp: TIdSMTP;                            // Unité IdSMTP
    begin
      // Création des objets
      // Le message et son contenu
      IdMsg := TIdMessage.Create(nil);
      // La gestion SSL
      IdIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      // Le composant d'envoi via SMTP
      IdSmtp := TIdSMTP.Create(nil);
      try
        // Paramétrage du message
        IdMsg.ContentType := 'text/plain';
        IdMsg.From.Address := 'email.emetteur@yahoo.com';
        IdMsg.ReplyTo.Add.Address := 'email.emetteur@yahoo.com';
        IdMsg.Recipients.Add.Text := 'email.destinataire@voila.fr';
     
        IdMsg.Subject := 'Simple email transmis depuis un compte Yahoo';
        IdMsg.Body.Text := 'Ceci est un test d''email depuis une application Delphi et les composants Indy, en utilisant un compte Yahoo.';
     
        // Affectation du gestionnaire SSL
        IdSmtp.IOHandler := IdIOHandler;
     
        // Paramétrage du composant SMTP
        IdSmtp.Host := 'smtp.yahoo.com';
        // Port pour échange SSL
        IdSmtp.Port := 465;
        // forcer l'utilisation de SSL
        IdSmtp.UseTLS := utUseImplicitTLS;
     
        // Identifiant/mot de passe de connexion
        IdSmtp.Username := 'Identifiant de connexion au serveur de messagerie';
        IdSmtp.Password := 'mot de passe de connexion';
     
        // Connexion
        IdSmtp.Connect;
        try
          // Envoi
          IdSmtp.Send(IdMsg);
        finally
          // Déconnexion avec notification au serveur
          IdSmtp.Disconnect(True);
        end;
      finally
        // Libération des objets
        IdSmtp.Free;
        IdIOHandler.Free;
        IdMsg.Free;
      end;
    end;
    On aurait tout aussi bien pu utiliser la bibliothèque ICS de François Piette ou autre...
    Philippe.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Points : 8
    Points
    8
    Par défaut Envoi de mail
    Bonjour,

    Merci Ph. B pour votre intervention. Je m'en vais de ce pas tester votre affaire.

    Bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Bouncy castle] Envoyer un mail chiffré avec piece jointe
    Par finalevirus dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 27/04/2013, 23h34
  2. Réponses: 1
    Dernier message: 19/11/2009, 09h30
  3. Comment envoyer un mail HTML avec Tinymce
    Par sws2008 dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2008, 18h23
  4. [Mail] Envoyer des mails simplement avec PHP
    Par mailou dans le forum Langage
    Réponses: 4
    Dernier message: 29/01/2006, 17h21

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