首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TIdAttachmentFile IdMessage1.MessageParts 发送多个附件时文件名失误

2012-12-15 
TIdAttachmentFile IdMessage1.MessageParts 发送多个附件时文件名出错varmyIdAttachment:TIdAttachmentFi

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

热点排行