TIdAttachmentFile IdMessage1.MessageParts 发送多个附件时文件名出错
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[i];
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,要么不成功,要么报错(也可能是我的语句有问题)