Indy(10.0.52版本)IdSmtp控件发送邮件,
如果附件为中文名,如 我的电脑.zip,该邮件发送成功后,
接收邮件时发现,原来附件名会改变成_ _ _.zip,
怎么能保证文件名不会改变?
另外,我查看了IdMessage控件的属性,好像没有附件名称这类的

解决方案 »

  1.   

    那就用英文的了。我用循环发送邮件的时候只能发两封。超过两封就会出错  ' too many letters in this connect ...'
    不知道是怎么回事???晕。同是天涯伦落人。
      

  2.   

    晕,10.0.52版本我还没试过发两封的,
    9.0.18版的,我连续发多个邮件可以。indy也做的不够好
      

  3.   

    我用的是d6。是8.0.25的。晕。那里有10.0.52的down啊。感谢!也要感谢楼主的地盘。^-^
      

  4.   

    呵呵,我比较喜欢自己用Socket写,不大中意这里面的组件……汗
      

  5.   

    转贴这篇文章,不知道对你有用吗?
    ================================================================================
    常用邮件编码及乱码的解决--------------------------------------------------------------------------------
    http://tech.sina.com.cn 2001/02/28 15:04 中国电脑教育报 徐济仁、陈家松
      E-mail是Internet上使用的一项服务,它通过数字化的方式进行信件的传送。E-mail的实现方式为:发送方将邮件发至对方主机(或就近主机),然后由主机经过一定的传送路径转发至指定的接收方主机上存储,再由接收方收取阅读,是一种非交互式的存储转发技术。该过程中使用了多种技术协议,才保证邮件的正确无误地传递,如果使用中双方基于不同的邮件协议,就可能会造成邮件中出现乱码的情况。  SMTP(Simple Message Transfer Protocol)简单邮件传输协议,是基于TCP/IP网络的协议,描述了一个邮件报文的格式及当它们传输时如何处理这些报文,是一种利用网络交换文字信息的非交互式技术,用于主机之间的电子邮件交换。利用SMTP,Internet的主机就可收发由普通西文字符组成的文本邮件。  为了传送声音、图像等多媒体二进制数据,还必须将这些数据经过特殊的非字符编码,于是,就出现了MIME(Multipurpose Internet Mail Extension protocol)多用途的网际邮件扩充协议,该系统可以处理常规的报文(普通西文文本)和声像等二进制数据。MIME有Base64和QP(Quote-Printable)两种编码方式。Base64是一种通用的方法:把3个Byte的数据用4个Byte表示,这样,这4个Byte中,实际用到的都只有前面6个bit,这样就不存在只能传输7个bit的字符问题了;QP方式:把一个8bit的字符用两个16进制数值表示,然后在前面加“K”。所以我们有时在收到的邮件中会看到经过QP编码后的文件内容为:KB3KC2KBFKA1KC7KE5KA3KACKC4KFAKBAKC3KA3KA1等。  最早处理二进制数据的编码为Uuencode,是Unix系统的UU编码方式,其解码为Undecode,它们作为Unix系统主机之间的拷贝协议UUCP的一部分开发出来。  我们知道,ASCII编码为7位有效码,而非ASCII的如汉字则采用双字节表达一个汉字,通过字节最高位b7置1来实现。但由于历史形成的原因,Internet上电子邮件主要处理7bit文本,而且一些服务器或网关可能限制8bit传输,这对ASCII字符不会影响;其它非ASCII数据,则必须使用7bit将邮件编码后再发送,否则邮件在传送过程中,如果其最高位被过滤掉,则必然为乱码,而且该邮件的接收方也是无法还原的。由于祖国大陆和港台地区对汉字编码的不统一,祖国大陆使用GB码,港台使用Big5码,这样就造成使用对方交换信息时出现乱码,只有通过将对方内码转换后,才能正确显示。  我们在上网使用Outlook Express收发电子邮件时,经常需使用到各种编码的文字,主要有简体中文的GB2312码和HZ码(使用频率比较高的两种编码),以及通用字符UTF-7和UTF-8、西欧字符等,如果电子邮件软件中没有内置BIG5编码,那收到BIG5编码的电子邮件时就会出现乱码,在电子邮件传输过程中,可能会发生误码或出现乱码,电子邮件传送的内容我们就无法认识。现在有很多软件可以解决这个问题,其中乱码察看器就是其中功能比较强的一个。  乱码察看器支持MIME/Base64、Quoted-Printable、HZ和UUCode四种形式的编码和解码,有改进的混合乱码识别算法(多种乱码混合在一起时可以正确识别不同乱码),单键解码功能:只要选中需要查看的乱码文本(如果不选中任何内容,则会自动全选),然后按下预先设定的热键(默认为F7),配合改进的识别算法,就可以较好地将这些乱码转换成正常的文本内容,自动识别BIG5码(将BIG5码转成GB码)繁体中文和简体中文相互转换(Windows2000下使用更方便)、实时监视剪贴板自动解码、智能弹出等,此外,还可以更改背景颜色及默认字体及其他一些新增功能:V2.60版中新增了某些HTML对中文进行编码所形成乱码的识别和支持;修正了程序运行时Windows无法关机的问题;修正了一些小Bug。  乱码察看器V2.60的下载地址:  go5.163.com-------------------------------------
    -----------------------------------------------------------------------------------------------------------------------
            E-mail编码主要有:  

            1.UU编码  
            在早期传送非 ASCII码的文件时,最常用的便是这种UU(Unix-to-Unix encoding)编码方式。
          Uuencode和Uudecode分别是Unix系统中使用的UU编码和解码程序,后来被改写成为在DOS中亦可执行
          的程序。  

            2.MIME编码  
            UU编码解决了E-mail传送非ASCII文件的问题,但这种方式并不方便。因而又发展出一种新的编
          码标准MIME(Multipurpose Internet Mail Extentions),一般译作“多媒体邮件传送模式”。顾名
          思义,它可以传送多媒体文件,在一封电子邮件中附加各种格式文件一起送出。 
            MIME定义两种编码方式:Base64与QP(Quote-Printable)。QP的规则是对于资料中的7位无须重复
          编码,仅将8位的数据转成7位。   
            QP编码适用于非ASCII码的文字内容,例如我们的中文文件。而Base64的编码规则,是将整个文
          件重新编码成7位,通常用于传送二进制文件。编码的方式不同会影响编码之后的文件大小。而具有   
            MIME功能的E-mail软件大都能自动判别你的邮件是采用何种编码,然后自动选择用QP或Base64
          来解码。  
            MIME标准现已成为Internet电子邮件的主流。现在最常使用的电子邮件软件Eudora、FoxMail、
          Netscape Mail、Outlook Express和Internet Mail等都支持MIME编码标准。   

            3.Binhex编码 
            Binhex的编码方式常用于Mac机器。一般PC上的电子邮件软件,亦多数支持MIME的规格,很少有支
          持Binhex格式的。在常用的电子邮件软件中,只有Eudora具有这种功能,可直接解读Binhex的编码。 
      

  6.   

    二楼的,你的SMTP服务器限制了只能发两封。
      

  7.   

    这个问题已经自己解决了,
    修改indy(10.0.52)的程序,
    function TIdMessageDecoderMIME.RemoveInvalidCharsFromFilename(const AFilename: string): string;
    注释掉函数里的
      for LN := 1 to Length(Result) do begin
        if Pos(Result[LN], ValidWindowsFilenameChars) = 0 then begin
          Result[LN] := '_';    //do not localize
        end;
      end;就可以显示中文附件了,
    郁闷,中文成了非法字符
      

  8.   

    south_sky(雨):祝贺你解决问题了。^-^学习。^-^ahjoe(强哥) 
    二楼的,你的SMTP服务器限制了只能发两封。我用的是163.com.免费的。我用其他的试试。谢谢你啊。听我的好消息。