Bonjour,

Je fais une mise à jour d'un ancien programme de Delphi 7 vers Delphi 2009, j'ai trouvé sur un forum la modification à faire entre TIdAttachment en D7 et TIdAttachmentFile en D2009. Cependant à l'arrivée, la pièce jointe à un nom qui ne correspond pas à celle d'origine (et qui doit surement dépendre de la boîte mail - sur yahoo la pièce jointe se nomme "Application001" et dans une autre boîte mail où je me connecte avec Thunderbird elle s'appelle "Partie 1.2"), et en plus elle n'a pas d'extension.

Que faut-il modifier dans le code suivant, pour que ma pièce jointe arrive avec son nom et son extension d'origine? Merci.

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
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
Procedure TFormSendEMail.bbSendMailClick(Sender: TObject);
var
  i: integer;
  IdMessage : TIdMessage;
  IdSMTP    : Tidsmtp;
begin
  Screen.Cursor:= crHourGlass;
 
  //Création du message
  IdMessage:= TIdMessage.Create(nil);
  IdMessage.From.Address:= eSenderEmail.Text;               //Expéditeur
  IdMessage.Recipients.Add.Address:= cxRecipient.Text;      //Destinataire
 
  if cbSendCopy.Checked then                                //Envoie d'une copie à l'adresse de l'expéditeur
    IdMessage.Recipients.Add.Address:= eSenderEmail.Text;
 
  IdMessage.Subject:= eSubject.Text;                        //Sujet
  //IdMessage.ContentType:= 'multipart/alternative';
  IdMessage.ContentType:= 'text/plain';
  IdMessage.Body:= mMessage.Lines;                          //Message
 
  for i:= 0 to FAttachedFiles.Count - 1 do                  //Pièce jointe
  begin
    {$IFNDEF D7}
    TIdAttachmentFile.Create(IdMessage.MessageParts, FAttachedFiles[i]);
    {$ELSE}
    TIdAttachment.Create(IdMessage.MessageParts, FAttachedFiles[i]);                  //Delphi 7
    {$ENDIF}
  end;
 
  {$IFNDEF D7}
  if IdMessage.MessageParts.Count > 0 then IdMessage.ContentType:= 'multipart/mixed';
  for i:= 0 to IdMessage.MessageParts.Count - 1 do
    if IdMessage.MessageParts[i] is TIdAttachment  then
    begin
      TIdAttachment(IdMessage.MessageParts[i]).ContentDisposition:=
        'attachment; filename="' + TIdAttachment(IdMessage.MessageParts[i]).FileName + '"';
    end;
  {$ENDIF}
 
  //Configuration du serveur pour l'envoi
  IdSMTP:= TIdSMTP.Create(nil);
  with GlobalLicenseInformation do
  begin
    IdSMTP.Host:= MS_SmtpServer;
    IdSMTP.Port:= MS_PortNumber;
    if (MS_UseAuthentification) then
    begin
      IdSMTP.AuthType:= satDefault;
      IdSMTP.Username:= MS_UserLogin;
      IdSMTP.Password:= MS_UserPassword;
    end;
  end;
 
  //Envoi
  try
    try
      IdSMTP.Connect;
      if (GlobalLicenseInformation.MS_UseAuthentification) then IdSMTP.Authenticate;
      IdSMTP.Send(IdMessage);
    except
      on e: Exception do MessageDialog(e.Message, mtError, [mbOK], 0);
    end;
  finally
    IdSMTP.Disconnect;
    IdSMTP.Free;
    IdMessage.Free;
  end;
 
  Screen.Cursor:= crDefault;
end;