Bonjour,
J'ai un problème particulièrement étrangeJe dois envoyer un e-mail avec une version texte, une version HTML et une pièce jointe (une image PNG).
Sans la pièce jointe, je n'ai aucun problème. Mais voilà ce qui se passe quand j'envoie ma pièce jointe avec :
Le fichier est bien envoyé (le temps d'envoi est plus long et si je regarde le source du mail reçu il y est bien), mais il est invisible et inaccessible.
Je m'explique : Outlook ne me signale pas qu'il y a des pièces jointes, donc je ne sais pas y accéder. Et ma messagerie Gmail signale qu'un fichier joint existe (et me montre son nom correct) mais ne me donne aucun lien pour le télécharger !!!
Je me suis inspiré de la FAQ Delphi pour écrire mon code, et l'ai un peu modifié. Voici ce que ça donne :
Les variables AddressFrom, NameFrom, Subject, BodyText, Body, ImageFileName et Recipients sont des variables de la classe TSendThread et sont correctement renseignées à ce moment (vérifié au débogage).
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 procedure TSendThread.Execute; var SMTP : TIdSMTP; Mail : TIdMessage; I : integer; Recipient : string; begin Mail := TIdMessage.Create(nil); try Mail.ContentType := 'multipart/alternative'; Mail.Recipients.Add; Mail.From.Name := AddressFrom+' '+NameFrom; Mail.Subject := Subject; TIdText.Create(Mail.MessageParts, BodyText).ContentType := 'text/plain'; TIdText.Create(Mail.MessageParts, Body).ContentType := 'text/html'; if ImageFileName <> '' then TIdAttachmentFile.Create(Mail.MessageParts, ImageFileName).ContentType := 'image/png'; Mail.MessageParts.CountParts; SMTP := TIdSMTP.Create(nil); try SMTP.Host := 'out.versateladsl.be'; SMTP.Connect; for I := 0 to Recipients.Count-1 do try Recipient := Recipients[I]; Mail.Recipients[0].Name := GetFirstToken(Recipient, #9); Mail.Recipients[0].Address := GetLastToken(Recipient, #9); SMTP.Send(Mail); except end; finally SMTP.Free; end; finally Mail.Free; end; end;
Voilà j'espère que quelqu'un saura m'aider.
d'avance
![]()
Partager