email自动发送邮件乱码问题的解决,以及及自己写svn同步邮件脚本

工作繁忙,这几天项目的合作者有个要求,就是合作的svn仓库提交后能够自动用邮件通知所有参与的人。这个应该很成熟了。google之,,发现一些很常用的方式。比如使用commit-email.pl,关于使用commit-email.pl网上有一堆文章,就不重复了。使用commit-email有乱码解决方案如下

使用commit-email,需要在post-commit 中加入一句

LANG=zh_CN.GB18030export LANG

这句话能够解决发送邮件的时候log 日志 乱码问题,如果你是其他地区语言,可以参考类似的方式尝试修改解决。

如果是修改内容发生了乱码,可以修改

push(@head, “Content-Type: text/plain; charset=UTF-8\n”);

push(@head, “Content-Type: text/plain; charset=zh_CN.UTF-8\n”);

我就是通过上述方式解决了乱码问题,致命的是,公司的邮箱服务器直接就拦截了我的sendmail,所有邮件全部拦截进了垃圾分类。而客户端无法看到。

没办法,只有自己鼓捣。

svn在完成后,可以调用钩子执行脚本,直接用公司的邮箱帐户名密码不就能够解决发送拦截问了么。

一番搜索后找到了msmtp + mutt ,linux下命令行客户端。

具体实现如下

安装mutt和msmtp

sudo apt-get install muttsudo apt-get install msmtp

装完客户端

然后配置msmtp ,在/etc目录下创建msmtprc 这是配置文件

写入

account default#你的smtp地址host smtp.xxx.com port 25#你的邮箱讯息from xxx@xxx.comauth logintls offuser xxxxpassword xxxx#自己修改日志路径logfile /home/svn/maillog

然后修改Mutt的配置文件 一般是/etc/Muttrc,在最后追加

set sendmail=”/usr/bin/msmtp”set use_from=yesset realname=”xxx@xxx.com”set editor=”vim”

至此应该就能够发送邮件,如果不能肯定是你哪里配置错掉了。

测试邮件发送

你的邮箱

看看能不能在邮箱收到邮件

接下来就是脚本了

我的脚本异常简洁,只能说能用

在仓库的hooks下创建文件

touch mailNotifychmod +x mailNotifyvim mailNotify

然后加入以下代码,这段代码完成后你可以直接用./ 跑跑看,能跑通应该也能发mail了

LC_CTYPE=”zh_CN.GB18030″#修改/usr/bin/svnlook到你实际svnlook路径SVNLOOK=/usr/bin/svnlook#修改mutt到你实际mutt的安装位置MUTT=/usr/bin/muttcontext=$($SVNLOOK info $1 -r $2) #打印svn的更新信息shiftshift#将联系人串成一串儿email=$1shiftwhile(($#;0))do email=$email,$1 shift|

接下来就是修改post-commit了,这个脚本是被自动调用的,它能够自动在更新后调用执行

cp post-commit.tmpl post-commitchmod +x post-commit

然后注释掉里边的执行代码,放入我们的执行代码,注意不要注释掉REPOS和REV两个变量

加入这些话

#mailNotify路径用绝对路径/home/svn/repository/smartHome/hooks/mailNotify } xxx@xxx.com xxx@bbb.com

后边可以更很多邮箱,加多少应该都没问题。

然后你可以尝试update一个版本看看会不会有邮件发出来。

至此应该完成了,有问题可以在留言提出。 也可以访问我的blog网站

你所缺少的部分,也早已被我用想像的画笔填满。

email自动发送邮件乱码问题的解决,以及及自己写svn同步邮件脚本

相关文章:

你感兴趣的文章:

标签云: