2007-08-25
用active mailer发送gmail信件遇到的两个问题
关键字: active mailer gmail PERM_FAILURE
1.gmail似乎是为了解决垃圾邮件问题,有时候发信会被退回,提示信息如下
不懂这个“Sector 5 policy”是什么地方的东西,也不知道怎么解决。
2.我们发送的信件包含中文,编码则是统一用utf-8,结果发现163的信箱会显示乱码。而在web上直接用gmail发信则没有问题,如果用其它邮件客户端(我用Evolution)发送也没有错,我比较了一下原始信息,发现确实有区别:
现在原因是找到了,可是我不知道怎么用上面两种方式发信,应该用base64编码吧?查ruby和rails的api没有找到合适的。
不知道我的思路是不是有错误,有没有人遇到过类似的问题?
代码
- Technical details of permanent failure:
- PERM_FAILURE: Message rejected for Sector 5 policy reasons
不懂这个“Sector 5 policy”是什么地方的东西,也不知道怎么解决。
2.我们发送的信件包含中文,编码则是统一用utf-8,结果发现163的信箱会显示乱码。而在web上直接用gmail发信则没有问题,如果用其它邮件客户端(我用Evolution)发送也没有错,我比较了一下原始信息,发现确实有区别:
通过web发送的信件
- Content-Type: multipart/alternative;
- boundary="----=_Part_143410_16080054.1188051544112"
- Delivered-To: makeradmin@gmail.com
- ------=_Part_143410_16080054.1188051544112
- Content-Type: text/plain; charset=GB2312
- Content-Transfer-Encoding: base64
- Content-Disposition: inline
- ICAgLSAqzfjS1yoK
- ------=_Part_143410_16080054.1188051544112
- Content-Type: text/html; charset=GB2312
- Content-Transfer-Encoding: base64
- Content-Disposition: inline
- PHVsPjxsaT48c3Ryb25nPs340tc8L3N0cm9uZz48L2xpPjwvdWw+Cg==
- ------=_Part_143410_16080054.1188051544112--
通过Evolution发送的信件
- --=-LH2nyzUVing+UsJ6hhVF
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- 网易邮箱测试
- --=-LH2nyzUVing+UsJ6hhVF
- Content-Type: text/html; charset=utf-8
- Content-Transfer-Encoding: 7bit
- "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
- 网易邮箱测试
我们用active mailer发送的信件
- Return-Path:
@gmail.com> - Received: from ( [xx.xx.xx.xx])
- by mx.google.com with ESMTPS id v38sm6206814wah.2007.08.25.06.58.25
- (version=TLSv1/SSLv3 cipher=OTHER);
- Sat, 25 Aug 2007 06:58:26 -0700 (PDT)
- Date: Sat, 25 Aug 2007 21:58:17 +0800
- From: makeradmin@gmail.com
- To: freebuilder@163.com
- Subject: =?utf-8?Q?=e6=82=a8=e7=9a=84=e6=9c=8b=e5=8f=8b=e9=82=80=e8=af=b7=e6=82=a8=e5=8a=a0=e5=85=a5=e7=9a=ae=e5=8c=a0=e7=bd=91?=
- Mime-Version: 1.0
- Content-Type: text/html
- Message-ID: <46d03582.26f8720a.3b80.ffffd25a@mx.google.com>
- ...
现在原因是找到了,可是我不知道怎么用上面两种方式发信,应该用base64编码吧?查ruby和rails的api没有找到合适的。
不知道我的思路是不是有错误,有没有人遇到过类似的问题?
评论
fsword
2007-08-30
谢谢,不过我现在还没有搞明白怎么让信件被BASE64编码一下,搞定以后再回复。
sinajj
2007-08-27
看起来你发信的编码是Quoted Printable。
信件传递的过程中,传输的内容中不能存在UTF-8的字符。SMTP只解决传输过程,不解决传输过程中的邮件内容文体组成和编码问题,所以一般说来,需要在发送前构建邮件体,将所有非可打印字符用BASE64或者QUOTED PRINTABLE编码,然后再发送。
所以,你需要先将邮件内容BASE64编码,然后再发送。
信件传递的过程中,传输的内容中不能存在UTF-8的字符。SMTP只解决传输过程,不解决传输过程中的邮件内容文体组成和编码问题,所以一般说来,需要在发送前构建邮件体,将所有非可打印字符用BASE64或者QUOTED PRINTABLE编码,然后再发送。
所以,你需要先将邮件内容BASE64编码,然后再发送。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 20234 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最新评论
-
prototype确实实用
其实感觉还是有问题的,极端点,这个Ajax.Updater是同步的,并且希望up ...
-- by afcn0 -
prototype确实实用
也许是为了解决浏览器的某些bug吧,要不然他大可不必延迟执行。或许,是为了起一个 ...
-- by 笨笨狗 -
prototype确实实用
不过其setTimeout(function() {html.evalScrip ...
-- by afcn0 -
prototype确实实用
Prototype是我的js学习榜样,嘿嘿这个自动执行js是可以通过evalSc ...
-- by 笨笨狗 -
prototype确实实用
fsword 写道今天解决一个bug时花了很长时间分析定位。<br /> ...
-- by ddh9504






评论排行榜