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.
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.
Vous pouvez également intervenir directement au niveau Stream pour modifier le contenu de la pièce jointe sans changer les autres propriétés.
Vous pouvez effectuer les mêmes opérations par programme.
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;