SMTP: Attachments Seem Corrupted or Garbled
Last reviewed: October 20, 1997
Article ID: Q118487  
2.10 3.00 MS-DOS The information in this article applies to: Microsoft Mail Gateway to SMTP, versions 2.1 and 3.0 
SYMPTOMS
Attachments of mail messages from the Microsoft Mail Gateway to SMTP may appear as in the body of messages and seem corrupted. They may also seem corrupted if you try to open them with their programs. CAUSE
Attachments are coming in encoded in a format not supported by the SMTP Gateway. The SMTP Gateway supports the TEXT and UUENCODE formats of experimental protocol RFC 1154 ONLY. The uuencode used is Sun's uuencode 5. The SMTP Gateway does not support: uuencoded files sent using the hex format instead of uuencode 
AppleSingle file format 
AppleDouble file format

解决方案 »

  1.   

    smtp只是转发报文,对内容并不限制,smtp就像telnet 或者ftp一样,通过简单的原语向server发送报文或者从client接收报文,比如rctp表明接受方,mail表明发送方等等。可以参看RFC 821.你如果关心报文形式,参考RFC 822.
      

  2.   

    多谢般若菠萝密的关注,那MSDN上所说的文件可能被破坏,并且说明了破坏的原因,是不是说SMTP并不关心报文但只能传输指定的格式的文件呢?The SMTP Gateway supports the TEXT and UUENCODE formats of experimental protocol RFC 1154 ONLY. The uuencode used is Sun's uuencode 5. 声音文件的编码能被SMTP支持吗?  如果能传到接受方但内容已被破坏怎么办?
      

  3.   

    早期在许多 unix 系统的传送协定只能传送七位元字元,并不支援二进位档案,像中文文字档就有用到八位元,所以无法完整地送到另一架机器上。 uuencode 指令,可以将二进位档转换成七位元的档案,传送到另一架机器上再以 uudecode 还原。最常见的是用在以电子邮件传送二进位档。uuencode 编码后的资料都以 begin 开始,以 end 作为结束。
      

  4.   

    用SMTP传输文件,并不用理会文件是什么类型,因为所有的附件都是用Base64编码之后发送过去的,然后收信的时候进行Base64解码还原,所以不必担心。我的主页上有一个ESMTP发送程序,你不妨参考一下?http://www.luocong.com
    在“老罗作品”里面。由于一些原因,暂时不公开源代码。如果有疑问,请发信给我探讨?多谢!
      

  5.   

    附加话题名称:uuencode 
    使用权限:所有使用者 
    使用方式:uuencode [-hv] [sourcefile] targetfile  
    说明:  
    早期在许多 unix 系统的传送协定只能传送七位元字元,并不支援二进位档案,像中文文字档就有用到八位元,所以无法完整地送到另一架机器上。 uuencode 指令,可以将二进位档转换成七位元的档案,传送到另一架机器上再以 uudecode 还原。最常见的是用在以电子邮件传送二进位档。uuencode 编码后的资料都以 begin 开始,以 end 作为结束。 
     begin 644 decode.dat  
    (内容编码) 
    `  
    end  
    begin 后的 644 是 unix 档案的调用权限代码。而 decode.dat 则是还原后的档名。 
    参数: 
    h 列出指令使用格式 (help)  
    v 列出版本讯息 (version)  
    范例: 
    将 source.dat 编码后存成 file.uud 档。由于 uuencode 会将编码后的资料在荧幕上列出,所以必须将资料导入 file.uud 中,而 target.dat 是 file.uud 还原后的档案名字,而不是编码后的档案。  
     uuencode source.dat target.dat > file.uud   
    执行指令后,由标准输入装置读入资料,简单地说是由键盘输入后在荧幕显示的资料,按 Crtl + d 键后就会被编码,输出至 file.uud 中。由于程序是以行为处理单位,若无法跳出程序,请多按几次 Ctrl + d 直到程序结束为止。  
     uuencode target.dat > file.uud   
    类似上一个指令,不过使用一个导入的技巧,将 source.dat 压缩后的资料传送给 uuencode 处理之后,存成 file.uud 档。 file.uud 档还原后就是 source.dat.Z 档。  
     compress -c source.dat | uuencode source.dat.Z > file.uud   
    显示版本讯息后,结束执行程序。 
     uuencode -v   
    -----------------------------------------------------------------------------------------------------------------------
            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的编码。 -----------------------------------------------------------------------------------------------------------------------收到的邮件是乱码该怎么办 汉字邮件出现乱码的原因很多,主要的原因是Internet上的某些邮件主机不支持8位(非ASCII码格式)传输,以及不同的邮件编码、不同设置的电子邮件接收软件、不同语种的操作系统等不兼容所致。
    当你收到一封乱码的邮件时,应根据邮件内容中的关键字符,判别其编码方法。不同的乱码,在不同的平台上有不同的解决办法,因此解码前必须先看一下文件的内容,根据特征对文件可能的编码方式(Uuencode\Base64encode\QP-encode或其他编码方式)对症下药。 
    Uuencode乱码 此种编乱码的特点是:在乱码前面含有“begin ***”,后面紧接着编码之前原始文件的名称。接着是已经Uuencode编码的邮件的内容。在乱码内容后面,即最后一行为
    “end”。如果你的电子邮件接收程序不支持UU解码,那么你看到的就是这些Uuencode乱码。
    解决Uuencode乱码的办法:将Uuencode乱码邮件转寄到自己的邮箱中,再使用能支持UU解码的电子邮件接受程序(如Eudora、OutLook Express等)来接收该邮件;或者将Uuencode乱码存入文本文件,改文件名后缀为UUE,然后使用Winzip解码;或者将Uuencode乱码存入一个文件,然后在DOS下用uudecode.exe程序将文件解码或在Windows下用Wincode解码。Wincode除支持UU解码外也支持MIME\Binhex等解码格式,应用颇为广泛。Base64 encode乱码 在Base64编码前一般有如下几部分“信头”:Content-Type(内容类型)、charest(字符集)及Content-Transfeer-Encoding(内容传输编码方式)。如果你的电子邮件接收程序不支持Base64解码,那么你看到的就是这些Base64 encode乱码。
    解决Base64 encode乱码的办法:将Base64 encode乱码邮件存成一个文本文件 ,改文件名后缀为.UUE,然后使用Winzip解码;或者将文件后缀改为.eml,由OutLook Express打开,就可以自动解码。QP-encode乱码 采用这种编码方式的邮件很容易进行判别,因为它的内容通常有很多等号。如果你的电子邮件接收程序不支持QP解码,那么你看到的就是这些QP-encode乱码。
    解决QP-encode乱码的办法:将QP-encode乱码邮件转寄到自己的邮箱中,再使用能支持QP解码的电子邮件接受程序(如Netscape mail、Eudora、OutLook Express、Becky等)来接收该邮件;或用Winzip对Quoted-printable解码。必须注意:在邮件信头检查、添加这样两行内容:Mime-Version:1.0Content-Transfer-Encoding:quoted-printable;信头中间不用空行,信头和信体之间要有一个空行。这样形成的文件,改后缀名为UUE,既可双击启动Winzip得到解码。HZ中文乱码 解决办法:在撰写邮件窗口中,选择“格式”菜单下的“语言”命令,并选中“简体中文(GB2312)”项,然后发送邮件。如果您使用Outlook Express,可以打开“查看”菜单点击“语言”选项中的“简体中文(GB2312)”项。如果您使用Eudora之类的软件,可以使用“南极星”、“两岸通”之类的软件,自动转换成不同的汉字编码。如果还看不出到的话,可以将这些编码文本copy到一个文本编辑器中。
    半个汉字乱码 由于很多英文编辑软件以字符为单位来处理文本,汉字被删除一半后,剩余的部分会和相邻的汉字重新组合,使得文本面目全非。因此,除了在输入、删除的时候注意这种问题外,还要注意不要在英文字处理软件中轻易使用“字符替换”功能,这往往会把一个汉字的后一个字符和相邻汉字前一个字符当成一个汉字被替换掉。
    解决办法:对于这种乱码,只要被乱码邮件存成一个文本文件,然后使用以字符为单位的编
    辑软件,将乱码行的首字符删除,后面的部分就会和相邻的乱码重新组合成可识别的汉字。如果上述方法不能奏效,那么只好告诉对方正确的发送方式,请对方重新发一份邮件给你。(寄邮件时最好选用附件的形式)
     
      

  6.   

    SMTP协议可以发送任意格式的附件。只要你想发。
    uuencode
    (UNIX to UNIX encoded) A UNIX utility for encoding binary data into ASCII, by splitting every three octets into four sextets and offsetting each sextet by 32 decimal.
      

  7.   

    SMTP协议可以发送任意格式的附件。只要你想发。
    uuencode
    (UNIX to UNIX encoded) A UNIX utility for encoding binary data into ASCII, by splitting every three octets into four sextets and offsetting each sextet by 32 decimal.