@ZEAL Blog·厉
WWW Zeal Blog
We stand alone,
TOGETHER.

Gmail的noname附件

Posted by zeal on 2009-07-17 12:34 , 1772 characters |  + 1 - 0   English
转载请保留本行原始出处声明信息 : http://www.zeali.net/entry/627 MaDe1nZEAL
标签 ( 网络 ):  , 

看上去导致Gmail收到邮件里面出现文件名为 noname 的附件的原因很复杂,所以直到现在 Gmail 开发团队仍然没办法完美解决这个很纠结的问题。

网上能找到的解决方法不多:一个是用 php 写的小脚本,用于修正从Mac系统发出的MIME邮件中附件文件名编码双单引号问题;一个是用 openssl 对 base64 编码的附件内容进行解压 [1]。但都是针对 Mac 系统的。

可给我发邮件的哥们都是最傻瓜不过的 MS Outlook 使用者,那天他别人通过 51job 的发送简历功能发过来的应聘邮件存成 eml 再放在附件里发给我,然后我收到的就是十几个 noname 附件。。。

直接把 noname 附件保存到本地,加上 .eml 文件后缀就可以直接用 Outlook Express 打开了。但打开之后邮件内容一半能看一半是乱码。

用文本编辑器打开这个 noname 文件,可以看到 outlook 发出来的时候对文本使用 base64 编码,对 html 附件使用 quoted-printable 编码。

把使用 quoted-printable 编码的 html 附件那部分 MIME multi-part 内容删掉再用 OE 打开,可以看到 base64 编码的邮件正文都正常了。再回过头去看打开的 html 附件的源代码,发现解码出来的 html 文件每一行开头都多了一个 = 号。就因为这一个 = 号,使得 html 的语法全都乱掉了。把 quoted-printable 编码的那部分代码每一行结尾的 = 号删掉,再用 OE 打开,看到的 html 附件就正常了。

因为原始发出的邮件给我收取的时候自动从服务器删除了,暂时没法验证这个多出来的 = 号是 outlook 发的时候就有还是 gmail 收取过程中产生的。 查看了一下服务器原始发出的邮件,发现邮件内容全部都是 base64 编码的,因为我是设置了自动转发到Gmail邮箱的,结果经过MDaemon二次处理转发之后的邮件就被转码成 quoted-printable 并且每行结尾多了类似=OA=的字符。如果直接设置 Gmail 通过 pop3 方式收取的话就不会出现乱码。看来还是由于不同的邮件系统对邮件进行处理的时候添加了某些不标准的元素而导致noname的出现。Gmail 到现在还搞不定这个问题,大概是因为邮件服务器和客户端的种类实在太多太繁杂了吧。

看来没什么好的解决方法,要手工去把多余的 = 号去掉也太费劲,用脚本处理还差不多。还是先让对方以后打成压缩包再发给我吧。

附:

[1] blogspot 被墙,该文内容如下:I have to write this down, otherwise I'll have to spend another hour figuring it out again.

  1. Save the attachment from Gmail to the desktop (I assume as noname).
  2. Edit it to remove the small MIME attachment near the top (the real document is the second one). Also remove all the MIME header information. What you should be left with is a huge continuous chunk of text. Don't forget to remove the MIME delimiter at the bottom of the file.
  3. Run the following command...
    openssl enc -d -base64 -in noname -out somename
  4. That's it! The output (somename) should be a usable now.
Last Modified on 2009-07-17 15:16
5 条评论:
- 商业创业实验室 (link) 于 2009-07-17 20:51
还是打成压缩包方便··呵呵·
- 悉尼 () (link) 于 2009-07-18 10:37
对阿,或者自己修改后缀什么的
- zuixinyule () (link) 于 2009-08-02 16:11
博主以前是不是gg的员工啊?
- zeal (link) verified2009-08-03 09:07
不是呃。以前不是,以后但愿是,咔咔。
- 华尔街 () (link) 于 2009-08-09 17:50
恩,有长知识了。感谢。
日志存档
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
本 Blog 原创内容
遵循以下授权:

Creative Commons
(创作共用) CC

署名-非商业性
-相同方式分享
ZEAL Blog 基于
Powered byPivot - 1.24.1: 'Arcee'
Pivot1.24.1
开发
系统部署于
Linode.com
Launched @
2005-04-27
Since 2005.04.27  梦想 就像鸡蛋 要么孵化 要么臭掉RSS Feed (Entries) | About me | Back To Home | @ZEAL | zbird.com | 沪ICP备05024379号