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 :
- procedure TF_MAIL_TO.btnEnvoyerClick(Sender: TObject);
- var
- i: Integer;
- myMessage: TIdMessage;
- myText: TIdText;
- myAttachment: TIdAttachment;
- begin
- {Paramètres serveur SMTP}
- mySMTP.ConnectTimeout := 2000;
- mySMTP.Host := 'A320';
- mySMTP.Username := 'XXXXXX';
- mySMTP.Port := 25;
- {Préparation du message}
- myMessage := TIdMessage.Create(nil);
- try
- myMessage.Encoding := meMIME;
- myMessage.ContentType := 'multipart/mixed';
- myMessage.From.Address := FormInit.CurrentUser.EMail;
- myMessage.From.Text := 'OTC';
- myMessage.ReplyTo.EMailAddresses := FormInit.CurrentUser.EMail;
- myMessage.Recipients.Add.Address := edtA.Text;
- myMessage.CCList.Clear;
- myMessage.CCList.Add.Address := edtcc.Text;
- myMessage.BCCList.Clear;
- myMessage.Subject := edtObjet.Text;
- myMessage.UseNowForDate := true;
- {Ajout du texte}
- myText := TIdText.Create(myMessage.MessageParts);
- myText.Body.Assign(FTexteMail);
- myText.ContentType := 'text/plain';
- myText.CharSet := 'ISO-8859-1';
- myText.ContentTransfer := '8bit';
- {Ajout de la pièce jointe}
- 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;
- {Envoi du mail}
- try
- mySMTP.Connect;
- except
- MessageDlg('Impossible de se connecter au serveur mail. E-mail non envoyé à ' + edtA.Text + ' !', mtError, [mbOK], 0);
- ModalResult := mrCancel;
- end;
- mySMTP.Send(myMessage);
- mySMTP.Disconnect;
- finally
- myMessage.Free;
- Close;
- end;
- end;
|
Si quelqu'un a une idée pour résoudre mon problème ça serait bien cool