Bonjour,

J'ai un problème particulièrement étrange Je 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 :
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;
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).

Voilà j'espère que quelqu'un saura m'aider.
d'avance