TIdAttachmentFile IdMessage1.MessageParts 发送多个附件时文件名出错(50)

  • 主题发起人 主题发起人 jozosoft
  • 开始时间 开始时间
J

jozosoft

Unregistered / Unconfirmed
GUEST, unregistred user!
var myIdAttachment:TIdAttachmentFile; begin ///来自: IdMessage1.Headers.Clear; IdMessage1.From.Name:= '=?gbk?B?' + Base64Encode( VMail_RealName ) + '?='; IdMessage1.From.Address:=VMail_Address; //'linghang2000999@163.com'; //主题: mySubject:= edtMailSubject.Text; if VMail_AddDateToSubject=1 then mySubject:= mySubject + '(' + dateTimetoStr(now) + ')'; mySubject := '=?gb2312?B?' + mySubject + '?='; IdMessage1.Subject := mySubject ; //收件人邮箱地址:? IdMessage1.Recipients.EMailAddresses:= AddRess ; IdMessage1.ContentType:='multipart/mixed; charset=gbk'; IdMessage1.Encoding:= meMIME; IdMessage1.Body.Clear; IdHtml:=TIdText.Create( IdMessage1.MessageParts ); with IdHtml do //正文文本/Html begin ContentType:='text/html;charset=gbk'; ContentTransfer:='base64'; //7bit Body.Clear; body.add( MailContent ); end; for I := 0 to lstAttach.Items.Count - 1 do begin sOneFile:= lstAttach.Items; if FileExists(sOneFile) then begin TIdAttachmentFile.Create( IdMessage1.MessageParts, sOneFile); //注意此行 idMessage1.MessageParts.Items[i ].FileName:= '=?gbk?B?' + Base64Encode( ExtractFileName( sOneFile) ) + '?='; end; end; end ------------------------------ 1、不要 “//注意此行” ,则: 所有文件名都不正确,以163.com接收到的邮件为例,文件名成了: 1 2 3 ...... 且都没有扩展名。    OutLook接收到的也一样的有问题。 2、加入 “//注意此行” ,则: 第一个附件文件名完全正确,其它的仍然不正确 请教各位出错原因及解决方法。 我试过用什么 IdMessage1.MessageParts.Clear,要么不成功,要么报错(也可能是我的语句有问题)
 
简单的方法:试试把文件名改成英文,不要用中文
 
不行的。与中英文无关,而且我现在就是用的英文测试。
 
用下面的语句试试:... TIdAttachmentFile.Create(IdMessage1.MessageParts, TransFileName); // 附件1 TIdAttachmentFile.Create(IdMessage1.MessageParts, PosFileName); // 附件2... IdMessage1.Body.Clear; //先清空上次发送的内容 IdMessage1.From.Address := AddressText; //发件人 IdMessage1.Recipients.EMailAddresses := EMailAddresses.Text + ',' + ERecAddressBak.Text // 收件人地址及备用地址 IdSMTP.Send(IdMessage1);...我用的是Indy 10,没有问题的。
 
我后来在D2010下编译时又没问题了,问题可能是D2009自带的是Indy10.2,而D2010带的是10.5.5谢谢
 
后退
顶部