Bonjour
Je voudrais envoyer des mails à partir de mon application, pour cela j'ai utilisé les composants Indy. Le code est assez simple et très classique je me suis inspiré de la FAQ Delphi mais je ne parviens toujours pas à envoyer de mails. Quand je clique sur le bouton envoyer, l'application prend un moment (un peu plus de 1 mn) puis me fait sortir le message "connection closed gracefully".
- La 1ère question est tout naturellement pourquoi ai-je cette erreur ? Je me suis documenté mais toute les modifications que j'ai faite ont aboutit au même message.
- ma 2ème question concerne le temps de réponse qui me parait excessivement long !
Voici le code
Toute idée est la bienvenue.
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 procedure Tfm_ActivexMEDIC.RzDialogButtons1ClickOk(Sender: TObject); var IdMessage: TIdMessage; IdSMTP: TIdSMTP; IMessage: TStrings; SSLHandler: TIdSSLIOHandlerSocketOpenSSL; begin IdMessage := TIdMessage.Create(nil); //création dynamique du composant IdMessage.From.Address := 'monmail@gmail.com'; IdMessage.Subject := 'Test'; IdMessage.ContentType := 'multipart/alternative'; //Message 'découpé' en plusieurs parties IMessage := TStringList.Create; IMessage.Add('Bonjour comment vous allez ?'); //par exemple... il faut juste que ce soit un TStrings ! //On passe ensuite à l'envoi du message: IdSMTP := TIdSMTP.Create(nil) ; //Création dynamique du composant SSLHandler:= TIdSSLIOHandlerSocketOpenSSL.Create(fm_ActivexMEDIC); IdSMTP.IOHandler:= SSLHandler; IdSMTP.Port := 465; //Le port SMTP standard... ou le 587 IdSMTP.Host := 'smtp.gmail.com'; //Le serveur auquel se connecter IdSMTP.UseTLS:= utUseExplicitTLS; //Ensuite on se connecte et on envoit le message, en gérant les erreurs, tant qu'à faire ! try try IdSMTP.Connect; IdSMTP.Send(IdMessage); except on e : EIdConnClosedGracefully do begin ShowMessage(e.Message); end; end; finally IdSMTP.Disconnect; IdSMTP.Free; IdMessage.Free; end; end;
Merci d'avance.
Partager