“SVN+Cruisecontrol”环境下,系统无法发送邮件

难题求助高手:“SVN+Cruisecontrol”环境下,系统无法发送邮件
情况描述:

1.在公司的内部局域网上使用“SVN+CruiseControl”来进行版本的控制和Delay Build工作。
2.要求在发现build失败后可以将相关的失败邮件发送给提交该部分代码的开发人员。
3.公司域内的项目组成员的SVN帐户全部放在了authz文件中,格式为:domain/username
4.公司域内成员的邮件系统采用MS-OuLook. 成员的邮件地址格式为:“[email protected]
5.在“CruiseControl”配置已经完成,如果将邮件地址写死,则整个发送邮件的工作完全正常
6.在“CruiseControl”配置中和自动动态派发邮件的配置项只有一个:defaultSuffix="@domain.com".
7.现在的出现的情况是:当build失败后,系统无法自动的将build失败的邮件发送给当事人。查看log后得到相关信息:
无效的邮件地址:“domain/[email protected]”。(假设domain为:soft,用户为:bond)
----> 即得到了这样的一个邮件地址: soft/[email protected]
8.很显然,CruiseControl是通过拼字符串的方式来得到邮件地址的(但是这样得到的邮件地址明显错误)
9.其中“soft/bond”部分来源于SVN,后面的“@soft.com ”来源于CruiseControl自身的配置项。
10.我试着修改SVN中用户帐户的格式,不要域信息。修改完毕后发现帐户无法访问SVN了。查阅相关资料后得知:SVN在域内使用的时候,域内用户的帐户必须遵循“domain/username”的格式。

文章来自:SVN中文技术网,转贴请保留本站地址详细出处请参考:http://www.svn8.com/svn/redirect.php?tid=1084&goto=lastpost

 

1、下载commit-email.pl,perl语言做成的发送邮件的客户端程序。在SVN的http://subversion.tigris.org/tools_contrib.html#hook_scripts    URL下,可以下载到commit-email.pl (tools/hook-scripts)脚本。(只要有了pop3或者SMTP的地址,该客户端就可以直接向此邮件服务器发送邮件,发送邮件当然不需要账户密码,只有接受邮件的人才需要设置账户密码。)

2、下载安装ActivePerl,支持perl脚本语言做成的commit-email.pl的解释运行。

3、修改SVN库中hooks目录,修改post-commit.tmpl的后缀名为.bat,便于在windows中自动执行,post-commit表示该脚本会在执行完commit动作后自动被触发。修改内容如下:

set REPOS=%1
set REV=%2

G:/JCDevTool/SVN/commit-email.pl %REPOS% %REV% --from [email protected] [email protected] -s "SVN-commit Subject"

其中,G:/JCDevTool/SVN/commit-email.pl 是commit-email.pl 的绝对路径; --from [email protected] 是邮件中的来自于的地址信息, [email protected] 是接受确认邮件的邮件地址; -s 后面是邮件的主题。

4、修改commit-email.pl 的脚本内容(假设我们在局域网的某个域中已经存在邮件服务器。):

$smtp_server = "邮件服务器的IP地址"; 或者 $smtp_server = "邮件服务器的域名";

my $svnlook = "SVN 自带的svnlook.exe工具的绝对地址" 例如"G:/Subversion/svnlook.exe";;

注:安装ActivePerl后,可以在命令行下直接执行commit-email.pl ,测试脚本配置的正确性,根据cmd的错误信息进行修改。
文章来自:SVN中文技术网,转贴请保留本站地址详细出处请参考:http://www.svn8.com/svn/redirect.php?tid=1084&goto=lastpost

你可能感兴趣的:(“SVN+Cruisecontrol”环境下,系统无法发送邮件)