Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3311 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  envoi de mail avec pièce jointe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

envoi de mail avec pièce jointe

n°1908800
tantemerde
c'est pas faux
Posté le 27-07-2009 à 10:38:14  profilanswer
 

Bonjour,
 
Je dois migrer une vieille appli en Delphi 2009, donc l'envoi de mail se fait via les composants Indy.
Mon mail part bien, et la pièce jointe aussi, mais il me reste 2 problèmes :
- le texte n'utilise pas le charset que je précise
- la pièce jointe n'utilise pas le filename que je précise
du coup je me retrouve avec un mail sans accents et une pièce jointe 'fdsbhjsk.dat' au lieu du nom de l'image.
 
voici le code :

Code :
  1. procedure TF_MAIL_TO.btnEnvoyerClick(Sender: TObject);
  2. var
  3.   i: Integer;
  4.   myMessage: TIdMessage;
  5.   myText: TIdText;
  6.   myAttachment: TIdAttachment;
  7. begin
  8.   {Paramètres serveur SMTP}
  9.   mySMTP.ConnectTimeout := 2000;
  10.   mySMTP.Host := 'A320';
  11.   mySMTP.Username := 'XXXXXX';
  12.   mySMTP.Port := 25;
  13.   {Préparation du message}
  14.   myMessage := TIdMessage.Create(nil);
  15.   try
  16.     myMessage.Encoding := meMIME;
  17.     myMessage.ContentType := 'multipart/mixed';
  18.     myMessage.From.Address := FormInit.CurrentUser.EMail;
  19.     myMessage.From.Text := 'OTC';
  20.     myMessage.ReplyTo.EMailAddresses := FormInit.CurrentUser.EMail;
  21.     myMessage.Recipients.Add.Address := edtA.Text;
  22.     myMessage.CCList.Clear;
  23.     myMessage.CCList.Add.Address := edtcc.Text;
  24.     myMessage.BCCList.Clear;
  25.     myMessage.Subject := edtObjet.Text;
  26.     myMessage.UseNowForDate := true;
  27.     {Ajout du texte}
  28.     myText := TIdText.Create(myMessage.MessageParts);
  29.     myText.Body.Assign(FTexteMail);
  30.     myText.ContentType := 'text/plain';
  31.     myText.CharSet := 'ISO-8859-1';
  32.     myText.ContentTransfer := '8bit';
  33.     {Ajout de la pièce jointe}
  34.     for i := 0 to FListImage.Count-1 do
  35.       if (FileExists(FListImage.Strings[i])) then
  36.       begin
  37.         myAttachment := TIdAttachmentFile.Create(myMessage.MessageParts,FListImage.Strings[i]);
  38.         myAttachment.ContentType := 'image/jpeg';
  39.         myAttachment.ContentDisposition := 'attachment';
  40.         myAttachment.FileName := ExtractFileName(FListImage.Strings[i]);
  41.       end;
  42.     {Envoi du mail}
  43.     try
  44.       mySMTP.Connect;
  45.     except
  46.       MessageDlg('Impossible de se connecter au serveur mail. E-mail non envoyé à ' + edtA.Text + ' !', mtError, [mbOK], 0);
  47.       ModalResult := mrCancel;
  48.     end;
  49.     mySMTP.Send(myMessage);
  50.     mySMTP.Disconnect;
  51.   finally
  52.     myMessage.Free;
  53.     Close;
  54.   end;
  55. end;


 
Si quelqu'un a une idée pour résoudre mon problème ça serait bien cool [:benjiman]

mood
Publicité
Posté le 27-07-2009 à 10:38:14  profilanswer
 

n°1909352
tantemerde
c'est pas faux
Posté le 28-07-2009 à 12:02:56  profilanswer
 

bon, pour le problème du charset, je n'ai toujours pas trouvé ce qui clochait, j'ai donc adopté une solution alternative.
j'envoie les mails au format html, et je remplace tous les caractères accentués par leur code html avant l'envoi (é etc...)
ça fonctionne, mais bon c'est pas cool pour les clients qui ne peuvent pas lire les mails en html :/
 
en revanche, toujours pas de soluce pour le nom de la pièce jointe :/

n°1909391
rengzehn
Posté le 28-07-2009 à 14:08:50  profilanswer
 

# for i := 0 to FListImage.Count-1 do
#       if (FileExists(FListImage.Strings[i])) then
#       begin
#         myAttachment := TIdAttachmentFile.Create(myMessage.MessageParts,FListImage.Strings[i]);
#         myAttachment.ContentType := 'image/jpeg';
#         myAttachment.ContentDisposition := 'attachment';
#         myAttachment.FileName := ExtractFileName(FListImage.Strings[i]);
#       end;
 
y'a pas un prob de compteur là si la liste est vide ?

n°1909410
tantemerde
c'est pas faux
Posté le 28-07-2009 à 14:41:40  profilanswer
 

non, si la liste est vide on n'entre pas dans la boucle.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  envoi de mail avec pièce jointe

 

Sujets relatifs
envoi d'un mailjavascript envoi mail avec pièce jointe
envoi mail php pièce jointe a plusieurs destinatairesajouter une piéce jointe et automatisé l'envoi d'un mail sur access
Problème d'envoi de mail avec pièce jointePHP : problème d'envoi de mail + piece jointe sur Wanadoo
envoi de mail html avec piece jointeEnvoi mail html/txt + piece jointe
envoi de mail avec piece jointe sous vc++Envoi mail avec piece jointe
Plus de sujets relatifs à : envoi de mail avec pièce jointe


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)