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
| var
IdMessage: TIdMessage;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
IdSMTP: TIdSMTP;
Message: TStrings;
i: Integer;
Fichiers: Array Of String;
begin
IdMessage := TIdMessage.Create(nil); //création dynamique du composant
IdMessage.From.Address := 'expediteur@domaine.com';
//Ces deux lignes peuvent-être répétées autant de fois que vous désirez
//d'adresse de réponse et/ou de destinataire
IdMessage.ReplyTo.Add.Address := 'expediteur@domaine.com';
IdMessage.Recipients.Add.Address := 'destinataire@domaine.com' ;
IdMessage.Subject := 'Sujet du message';
IdMessage.ContentType := 'multipart/alternative'; //Message 'découpé' en plusieurs parties
Message := Memo1.Lines; //par exemple... il faut juste que ce soit un TStrings !
//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(IdMessage.MessageParts, Message) Do
Begin
ContentType := 'text/plain';
Body.Insert(0, 'Ce message est un message HTML. Configurez votre client de courrier électronique' +
'pour le visionner de manière appropriée');
end;
//Ajout du message au format HTML (en supposant que Message contient du HTML) :
with TIdText.Create(IdMessage.MessageParts, Message) do
ContentType := 'text/html';
//Et maintenant, l'ajout des pièces jointes :
//Le tableau de strings Fichiers doit être remplis avec les chemins complets des fichiers à inclure
for i := Low(Fichiers) to High(Fichiers) do
TIdAttachment.Create(IdMessage.MessageParts, Fichiers[i]);
//On passe ensuite à l'envoi du message:
IdSMTP := TIdSMTP.Create(nil) ; //Création dynamique du composant
IdSMTP.Port := 25; //Le port SMTP standard...
IdSMTP.Host := 'smtp.serveur.com'; //Le serveur auquel se connecter
// paramétrage de la connexion SSL.
If SSLConnect Then
begin
IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.RootCertFile :='RootCert.cer';
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile := 'Certificat.cer';
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile := '';
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv3;
end;
//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: exception do MessageDlg(e.Message, mtError, [mbOK], 0);
end;
finally
IdSMTP.Disconnect;
IdSMTP.Free;
IdMessage.Free;
end;
end ; |
Partager