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
>