2007年9月13日星期四

呕心沥血之后,能够发邮件的SVNNotify

svnnotify --repos-path F:\VersionControl\svn\Projects\syskeeper --revision 30 --to haonan334451@163.com --smtp smtp.163.com --smtp-user haonan334451 --smtp-pass 5213344 --charset GB2312 --io-layer raw -V --smtp-authtype LOGIN --from haonan334451@163.com -H HTML::ColorDiff -d
不要小看这个命令啊,搞了我大半天啊。就是一直看SVN::Notify的文档,原来是一直报UTF非法字符的错误,烦人死了,我都快放弃了。后来才发现,原来对于多种字符,有--io-layer raw 选项。
用了之后,果然就是不再报错了。可是邮件还是发不出去。。。

自己本机开个邮件服务器,还是发不出去。还好,传到本机的邮件会做一个队列保存在某个目录,我就在那个目录里打开我发送的邮件,都是eml格式。打开一看,发现内容是乱码。。。

看来编码有问题。尝试--charset UTF-8,还是乱码啊,真奇怪,SVN是UTF的啊。呵呵,那就试试中文好了,用--charset GB2312,哇噢,果然不是乱码了。

可是天煞的邮件还是发不出去。研究了半天,才发现有--smtp-user和--smtp-pass选项。神啊,如果再有--smtp-port该多好啊,那我就直接用nari的邮箱发送了。可是天不作美,事实证明,是没有滴。。。
为什么老是发送不成功?是因为邮件协议加密?SASL?

我自己尝试telnet smtp.163.com 25,发现自己登不进去。这个协议我是不大明白的了。。。
然后我就尝试啊,--smtp-authtype CRAM-MD5,还有什么NTLM,还有什么PLAIN,给的这几个选项我一一尝试,都不行。

郁闷!!

NND,抓包!EtherPeek不是吃白饭的啊,然后看到Dreammail就登陆进了,为什么我的不能?网上也有很多Java代码成功连接的啊。。。
我注意到Dreammail登录时发送的是:AUTH LOGIN
为什么给我的选项里就没有这一个呢??

死马来当活马医,--smtp-authtype LOGIN,抓包来看,竟然进去了!!!

哈哈,不错不错!可是还有问题:
504 : Sender address rejected: need fully-qualified address

原来是前面这里:MAIL FROM:

怎么改?
发现这个参数:--from haonan334451@163.com


ok,再来一次,全部成功!
邮箱也受到邮件啦 :)

look:

没有评论: