TAttachment

Unité

Execute.Mailer

Description

Le composant TAttachment est utilisé par TMailer pour gérer les pièces jointes du mail.

Vous pouvez ajouter des pièces jointes directement Dans l'IDE. La propriété Attachments possède un menu déroulant permettant d'invoquer les méthodes Add et AddFile de TAttachments.

TAttachment1.png

Une fois la pièce jointe ajoutée, vous pouvez en définir le contenu par la boîte de dialogue disponible au niveau de l'attachement. La propriété FileName reçoit le nom du fichier, la propriété MimeType est renseignée via la fonction GetMimeType et la propriété Stream contient une copie du fichier en mémoire.

TAttachment2.png

Vous pouvez également intervenir directement au niveau Stream pour modifier le contenu de la pièce jointe sans changer les autres propriétés.

TAttachment3.png

Vous pouvez effectuer les mêmes opérations par programme.

Exemple

procedure TForm1.Button1Click(Sender: TObject);
var
  Stream: TStream;
begin
// pièce jointe ajoutée en mémoire (TMemoryStream)
// le fichier et lu au moment de l'attachement
  Mailer1.MailBody.Attachments.AddFile('Image1.png');

// pièce jointe ajoutée sur disque (TFileStream)
// le fichier doit être accessible tant que le mail n'a pas été envoyé
  Mailer1.MailBody.Attachments.AddFile('Image2.png', True);

// pièce jointe ajoutée via un Stream
  Stream := TResourceStream.Create(hInstance, 'Image3.png', RT_RCDATA);
// Ajoute le flux sans copie (TMailer en devient propriétaire)
  Mailer1.MailBody.Attachments.AddStream('Image3.png', 'image/png', Stream, False);

// pièce jointe dont le stream est lu via un évènement
  with Mailer1.MailBody.Attachments.Add do
  begin
    FileName := 'Image4.png';
    MimeType := GetMimeType(FileName);
    OnGetStream := GetStream;
  end;
end;

procedure TForm1.GetStream(Sender: TObject; var Stream: TStream; var AutoFree: Boolean);
begin
  Stream := TFileStream.Create('Image4.png', fmOpenRead or fmShareDenyNone);
// TMailer pourra supprimer le Stream quand il n'en aura plus besoin
  AutoFree := True;
end;