CentOS sendmail via gmail with attachment

来源:互联网 发布:java 键值对 常量 编辑:程序博客网 时间:2024/04/28 21:03

配置方法给出两篇文章,几乎说得差不多


Configuring Gmail as a Sendmail email relay

CENTOS: Sending Email using SENDMAIL, Relay via GMAIL


遇到的几个问题


1,配置好后无论如何都无法发送,一直以为是自己配置的有问题,找了两天也没能找到问题。

最后的最后,发现竟然是Gmail设置的问题,有一个地方的安全级别限制了代理发送邮件。

Gmail SMTP debug: error “please log in via your web browser” 


设置很简单

https://www.google.com/settings/security/lesssecureapps

将较低安全性的APP访问设置成ON就可以了。


2,还有一个问题就是邮件标题(Subject),正文(Content),附件(Attachment)的编码问题。

由于我要发送的邮件标题,正文,附件全部含有日文,所以编码问题就很纠结。

而在Outlook,Thunderbird,Gmail中,他们各自对编码的处理又不完全一样,

导致如果统一用一种编码,无论是UTF8还是ShiftJIS,还是ISOxxxx,

在Outlook和Thunderbird之中总是会有一种在标题或者正文处显示为乱码,

最为可笑的是,ThunderBird在ShiftJIS编码下,除在了主界面的邮件一览处的预览正文乱码之外,其它地方全正常。


解决办法过程是这样的

我打开了Gmail收到的邮件,显示原始邮件

会发现整个Mail是以这种方式分割的


Content-Type: multipart/mixed; boundary=1d2b5860-68f2-4a56-af8a-7448d05b7cb7

....

--1d2b5860-68f2-4a56-af8a-7448d05b7cb7
Content-Type: text/plain; charset=UTF-8

....<content>

--1d2b5860-68f2-4a56-af8a-7448d05b7cb7
Content-Type: text/csv; charset=Shift_JIS;name="report_2016_12_01.csv"
Content-Disposition: attachment;filename="report_2016_12_01.csv"
Content-Transfer-Encoding: base64

....<attachment>

--1d2b5860-68f2-4a56-af8a-7448d05b7cb7


会发现邮件的各个部分之间是以boundary分开的,每个部分都可以单独指定一种编码方式

这就允许一个邮件之中可以同时存在不同的几个编码方式。

这是最简单的结构,更复杂点的是每块被boundary隔开的单独区块还可以再分成更小的boundary


要作的就是在sendmail的时候手工的把这个用boundary组成的结构拼接出来,

这样在正文部分设置成UTF8,ThunderBird就不会乱码了,附件和标题部份设置成ShiftJIS


3,最后还有一个是在CentOS下修改完/etc/mail/sendmail.mc之后要反应到/etc/mail/sendmail.cf

的时候有点有一样,需要用到m4

Common Sendmail Configuration Changes


以上。

0 0