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 [email protected]
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="[email protected]"
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

时间: 2024-08-29 22:50:16

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

在linux服务器上装svn版本管理,自动部署代码到项目

在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw3X&pos=1 http://v5sheji.com/archives/setupsvnonlinux.html 1.安装svn服务器端  yum install subversion 从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认 安装成功提示:.....complete! 依次

Linux下搭建SVN服务器及自动更新项目文件到web发布目录(www)

一.linux服务器端配置 [[email protected] ~]# rpm -qa | grep sub subversion-libs-1.7.14-10.el7.x86_64 subversion-1.7.14-10.el7.x86_64 [[email protected] ~]# ps -ef | grep svn root      21019  20613  0 21:57 pts/0    00:00:00 grep --color=auto svn [[email prot

实用svn主干trunk自动merge到各个分支branch脚本

实用svn主干trunk自动merge到各个分支branch脚本 大多数使用svn的公司,当发现bug时或新功能时,会从主干trunk直接产生一个分支branch,如叫bug01.接着同事A修改里面的bug,如果测试通过,就提交分支,将分支bug01合并到主干,并解决冲突和主干保持一致.同事B也拉了个分支bug02,他也修改了,也测试通过,就提交分支,将分支bug02合并到主干,并解决冲突和主干保持一致.理论上没有任何问题. 问题出现 但是有这样一个情况,同事A修改完就提交分支,合并到主干解决冲

利用Python自动发送邮件

# -*- coding:utf-8 -*-from email.mime.text import MIMETextfrom email.header import Headerimport smtplib def send_mail(file_new): f = open(file_new,'rb') mail_body = f.read() f.close() msg = MIMEText(mail_body,'html','utf-8')  msg['Subject'] = Header(

Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法

首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion 2,创建版本库 svnadmin create /home/myrepos    //这里的文件目录自己随便设置 3,配置svnserve 上述版本库/home/myrepos建立后在文件夹下会生成conf文件夹,进入/home/myrepos/conf下面会有下面3个文件 authz passwd 

SVN配置以及自动部署到apache虚拟目录

SVN配置以及自动部署到apache虚拟目录 一.VisualSVN server 服务端和TortoiseSVN客户端下载 VisualSVN下载:http://subversion.apache.org/packages.html 页面最下方就可以找到(下图紫色链接) TortoiseSVN下载:http://tortoisesvn.net/downloads.html 下载的地方很醒目,有32位和64位 紧接着下边有语言包下载 二.VisualSVN server和TortoiseSVN安

VBS 自动发送邮件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 '--------------------------------------------------------------------------------- '函数名称 : SendMail '函数功能 : 自动发送邮件功能 '函数输入 : SendTo----收

SVN 使用hooks 自动更新到远程的web目录下

环境: A机器192.168.1.10  作为SVN的服务端     (环境 apache svn ssh) 环境: B机器 192.168.1.20    (环境 nginx php ssh svn 作为客户端) 目的:开发人员上传代码到A机器时, 会自动更新到B机器上nginx代理服务器的web目录,  以便开发人员直接访问. 环境搭建: A机器apache+svn环境的配置. http://my.oschina.net/denglz/blog/89183 配置好以后svn的基础功能(检出/

C#自动发送邮件

using System; using System.Collections.Generic; using System.Linq; using System.Net.Mail; using System.Text; using System.Threading.Tasks; namespace QQEmail { class Program { static void Main(string[] args) { for (int i = 0; i < 50; i++) { MailMessag