读书人

TIdAttachmentFile IdMessage1.Messag

发布时间: 2012-12-15 15:16:03 作者: rapoo

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,要么不成功,要么报错(也可能是我的语句有问题)

读书人网 >.NET

热点推荐