NAnt 目前的版本虽然支持 Email 的发送,但其不支持SSL的Email,这样我们要想直接使 NAnt 通过GMail 或126 等邮箱发送就不可能了。究其原因,是因为 NAnt.Core.Tasks.MailTask 和 NAnt.Core.MailLogger 中是用 System.Web.Mail.MailMessage 类构造电子邮件的属性和方法,这各类没有提供SSL 的支持。而 System.Web.Mail 这个namespace 下的所有类已经被 System.Net.Mail 所替代。NAnt.Core.Ext就是基于这个对NAnt 的一个扩展。
下载地址:NAnt.Core.Ext.zip
1
<?
xml version="1.0" encoding="utf-8"
?>
2 < project name ="MailLogger Test" default ="build" >
3 < property name ="nant.settings.currentframework" value ="net-4.0" />
4 < property name ="Platform" value ="Win32" overwrite ="false" />
5 < property name ="build.configuration" value ="debug" />
6 < property name ="Dir.Vault" value ="${directory::get-parent-directory(project::get-base-directory())}" overwrite ="false" />
7 < property name ="Dir.Framework" value ="${framework::get-framework-directory(framework::get-target-framework())}" overwrite ="false" />
8
9 < property name ="Dir.Solution" value ="${Dir.Vault}\TestSolution" overwrite ="false" />
10 < property name ="Dir.SolutionFile" value ="${Dir.Solution}\Test.sln" overwrite ="false" />
11 < property name ="nant.onfailure" value ="failed" />
12 < property name ="nant.onsuccess" value ="succeeded" />
13
14 < target name ="loadExt" >
15 < loadtasks >
16 < fileset >
17 < include name ="${Dir.Vault}\BuildFiles\bin\NAnt.Core.Ext.dll" />
18 </ fileset >
19 </ loadtasks >
20 </ target >
21
22 < target name ="build" depends ="loadExt" >
23 < call target ="clean" failonerror ="false" />
24 < call target ="syncCode" failonerror ="false" />
25 < call target ="msBuild" failonerror ="true" />
26 </ target >
27
28 < target name ="clean" >
29 < delete dir ="${Dir.Solution}\Output" />
30 </ target >
31
32 < target name ="msBuild" depends ="" >
33 < exec program ="${Dir.Framework}\MSBuild.exe"
34 commandline ="${Dir.SolutionFile} /t:rebuild /p:Configuration=${build.configuration} /l:FileLogger,Microsoft.Build.Engine;logfile=MsBuild.log append=true;verbosity=diagnostic;encoding=utf-8 /verbosity:quiet" workingdir ="." />
35 </ target >
36
37 < target name ="syncCode" depends ="" >
38 < p4sync
39 view ="//path/..."
40 user ="username"
41 port ="server:port"
42 client ="clientname"
43 force ="false"
44 verbose ="false" />
45 </ target >
46
47 <!-- Send Email -->
48 < property name ="Mail.Mailhost" value ="smtp.gmail.com" />
49 < property name ="Mail.From" value ="****@gmail.com" />
50 < property name ="Mail.To" value ="****@126.com" />
51 < property name ="Mail.Username" value ="****" />
52 < property name ="Mail.Password" value ="****" />
53
54 <!-- cmd: nant -buildfile:default.build -logger:NAnt.Core.MailLogger -l:NantBuild.log -->
55 < property name ="MailLogger2.mailhost" value ="${Mail.Mailhost}" />
56 < property name ="MailLogger2.from" value ="${Mail.From}" />
57 < property name ="MailLogger2.smtp.username" value ="${Mail.Username}" />
58 < property name ="MailLogger2.smtp.password" value ="${Mail.Password}" />
59 < property name ="MailLogger2.smtp.enablessl" value ="true" />
60 < property name ="MailLogger2.body.encoding" value ="utf-8" />
61 < property name ="MailLogger2.smtp.port" value ="587" /> <!-- Port: 465 or 587 -->
62 < property name ="MailLogger2.failure.notify" value ="true" />
63 < property name ="MailLogger2.success.notify" value ="true" />
64 < property name ="MailLogger2.failure.to" value ="${Mail.To}" />
65 < property name ="MailLogger2.success.to" value ="${Mail.To}" />
66 < property name ="MailLogger2.failure.subject" value ="Build failure!" />
67 < property name ="MailLogger2.success.subject" value ="Build successful!" />
68
69 < target name ="succeeded" >
70 < mail2
71 mailhost ="${Mail.Mailhost}"
72 isSSL ="true"
73 username ="${Mail.Username}"
74 password ="${Mail.Password}"
75 port ="587"
76 from ="${Mail.From}"
77 tolist ="${Mail.To}"
78 subject ="Build succeeded!"
79 isbodyhtml ="false"
80 message ="Build succeeded!" >
81 < files >
82 < include name ="*.log" />
83 </ files >
84 < attachments >
85 < include name ="*.log" />
86 </ attachments >
87 </ mail2 >
88 </ target >
89
90 < target name ="failed" >
91 < mail2
92 mailhost ="${Mail.Mailhost}"
93 isSSL ="true"
94 username ="${Mail.Username}"
95 password ="${Mail.Password}"
96 port ="587"
97 from ="${Mail.From}"
98 tolist ="${Mail.To}"
99 subject ="Build failed!"
100 isbodyhtml ="false"
101 message ="Build failed!" >
102 < files >
103 < include name ="*.log" />
104 </ files >
105 < attachments >
106 < include name ="*.log" />
107 </ attachments >
108 </ mail2 >
109 </ target >
110
111 </ project >
2 < project name ="MailLogger Test" default ="build" >
3 < property name ="nant.settings.currentframework" value ="net-4.0" />
4 < property name ="Platform" value ="Win32" overwrite ="false" />
5 < property name ="build.configuration" value ="debug" />
6 < property name ="Dir.Vault" value ="${directory::get-parent-directory(project::get-base-directory())}" overwrite ="false" />
7 < property name ="Dir.Framework" value ="${framework::get-framework-directory(framework::get-target-framework())}" overwrite ="false" />
8
9 < property name ="Dir.Solution" value ="${Dir.Vault}\TestSolution" overwrite ="false" />
10 < property name ="Dir.SolutionFile" value ="${Dir.Solution}\Test.sln" overwrite ="false" />
11 < property name ="nant.onfailure" value ="failed" />
12 < property name ="nant.onsuccess" value ="succeeded" />
13
14 < target name ="loadExt" >
15 < loadtasks >
16 < fileset >
17 < include name ="${Dir.Vault}\BuildFiles\bin\NAnt.Core.Ext.dll" />
18 </ fileset >
19 </ loadtasks >
20 </ target >
21
22 < target name ="build" depends ="loadExt" >
23 < call target ="clean" failonerror ="false" />
24 < call target ="syncCode" failonerror ="false" />
25 < call target ="msBuild" failonerror ="true" />
26 </ target >
27
28 < target name ="clean" >
29 < delete dir ="${Dir.Solution}\Output" />
30 </ target >
31
32 < target name ="msBuild" depends ="" >
33 < exec program ="${Dir.Framework}\MSBuild.exe"
34 commandline ="${Dir.SolutionFile} /t:rebuild /p:Configuration=${build.configuration} /l:FileLogger,Microsoft.Build.Engine;logfile=MsBuild.log append=true;verbosity=diagnostic;encoding=utf-8 /verbosity:quiet" workingdir ="." />
35 </ target >
36
37 < target name ="syncCode" depends ="" >
38 < p4sync
39 view ="//path/..."
40 user ="username"
41 port ="server:port"
42 client ="clientname"
43 force ="false"
44 verbose ="false" />
45 </ target >
46
47 <!-- Send Email -->
48 < property name ="Mail.Mailhost" value ="smtp.gmail.com" />
49 < property name ="Mail.From" value ="****@gmail.com" />
50 < property name ="Mail.To" value ="****@126.com" />
51 < property name ="Mail.Username" value ="****" />
52 < property name ="Mail.Password" value ="****" />
53
54 <!-- cmd: nant -buildfile:default.build -logger:NAnt.Core.MailLogger -l:NantBuild.log -->
55 < property name ="MailLogger2.mailhost" value ="${Mail.Mailhost}" />
56 < property name ="MailLogger2.from" value ="${Mail.From}" />
57 < property name ="MailLogger2.smtp.username" value ="${Mail.Username}" />
58 < property name ="MailLogger2.smtp.password" value ="${Mail.Password}" />
59 < property name ="MailLogger2.smtp.enablessl" value ="true" />
60 < property name ="MailLogger2.body.encoding" value ="utf-8" />
61 < property name ="MailLogger2.smtp.port" value ="587" /> <!-- Port: 465 or 587 -->
62 < property name ="MailLogger2.failure.notify" value ="true" />
63 < property name ="MailLogger2.success.notify" value ="true" />
64 < property name ="MailLogger2.failure.to" value ="${Mail.To}" />
65 < property name ="MailLogger2.success.to" value ="${Mail.To}" />
66 < property name ="MailLogger2.failure.subject" value ="Build failure!" />
67 < property name ="MailLogger2.success.subject" value ="Build successful!" />
68
69 < target name ="succeeded" >
70 < mail2
71 mailhost ="${Mail.Mailhost}"
72 isSSL ="true"
73 username ="${Mail.Username}"
74 password ="${Mail.Password}"
75 port ="587"
76 from ="${Mail.From}"
77 tolist ="${Mail.To}"
78 subject ="Build succeeded!"
79 isbodyhtml ="false"
80 message ="Build succeeded!" >
81 < files >
82 < include name ="*.log" />
83 </ files >
84 < attachments >
85 < include name ="*.log" />
86 </ attachments >
87 </ mail2 >
88 </ target >
89
90 < target name ="failed" >
91 < mail2
92 mailhost ="${Mail.Mailhost}"
93 isSSL ="true"
94 username ="${Mail.Username}"
95 password ="${Mail.Password}"
96 port ="587"
97 from ="${Mail.From}"
98 tolist ="${Mail.To}"
99 subject ="Build failed!"
100 isbodyhtml ="false"
101 message ="Build failed!" >
102 < files >
103 < include name ="*.log" />
104 </ files >
105 < attachments >
106 < include name ="*.log" />
107 </ attachments >
108 </ mail2 >
109 </ target >
110
111 </ project >