码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-24 14:24:27      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:svn   commit   email   乱码   

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

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

LANG=zh_CN.GB18030
export 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 mutt

sudo apt-get install msmtp

装完客户端

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

写入

account default
#你的smtp地址
host smtp.xxx.com 
port 25
#你的邮箱讯息
from xxx@xxx.com
auth login
tls off
user xxxx
password xxxx
#自己修改日志路径
logfile /home/svn/maillog

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

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="xxx@xxx.com"
set editor="vim"

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

测试邮件发送

echo ‘hello‘ | mutt -s ‘test‘ 你的邮箱

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

接下来就是脚本了

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

在仓库的hooks下创建文件

touch mailNotify

chmod +x mailNotify

vim mailNotify

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

#!/bin/bash
#用法 mailNotify svn仓库路径 svn版本号 Email地址1 Email地址2 ...
#这段是用来保证log中文的正确性的,你可以根据你的语言做相应的修改
export LC_CTYPE="zh_CN.GB18030"
#修改/usr/bin/svnlook到你实际svnlook路径
SVNLOOK=/usr/bin/svnlook
#修改mutt到你实际mutt的安装位置
MUTT=/usr/bin/mutt
context=$($SVNLOOK info $1 -r $2) #打印svn的更新信息
shift
shift
#将联系人串成一串儿
email=$1
shift
while(($#;0))
do
 email=$email,$1
 shift
done
#调用mutt发送邮件
echo $context | $MUTT -s ‘SVN Update‘ $email

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

cp post-commit.tmpl post-commit

chmod +x post-commit

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

加入这些话

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

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

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

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

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

标签:svn   commit   email   乱码   

原文地址:http://blog.csdn.net/xifengzui/article/details/45245123

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!