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

工作繁忙,这几天项目的合作者有个要求,就是合作的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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值