Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
jenkins
提交
00a221d4
J
jenkins
项目概览
xxadev
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
00a221d4
编写于
5月 13, 2012
作者:
M
murank
提交者:
Kohsuke Kawaguchi
5月 29, 2012
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix garbled mail headers (From/To/ReplyTo).
上级
5a730a59
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
36 addition
and
14 deletion
+36
-14
changelog.html
changelog.html
+3
-0
core/src/main/java/hudson/tasks/MailSender.java
core/src/main/java/hudson/tasks/MailSender.java
+14
-11
core/src/main/java/hudson/tasks/Mailer.java
core/src/main/java/hudson/tasks/Mailer.java
+19
-3
未找到文件。
changelog.html
浏览文件 @
00a221d4
...
...
@@ -55,6 +55,9 @@ Upcoming changes</a>
<!-- Record your changes in the trunk here. -->
<div
id=
"trunk"
style=
"display:none"
>
<!--=TRUNK-BEGIN=-->
<ul
class=
image
>
<li
class=
bug
>
Fixed encoding handling in e-mail headers.
(
<a
href=
"https://github.com/jenkinsci/jenkins/pull/486"
>
pull 486
</a>
)
<li
class=
bug
>
When accessing a page that requires authentication, redirection to start authentication results in a content decoding failure.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-13625"
>
issue 13625
</a>
)
...
...
core/src/main/java/hudson/tasks/MailSender.java
浏览文件 @
00a221d4
...
...
@@ -43,6 +43,7 @@ import org.apache.commons.lang.StringUtils;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
java.util.*
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
...
...
@@ -120,6 +121,8 @@ public class MailSender {
}
}
catch
(
MessagingException
e
)
{
e
.
printStackTrace
(
listener
.
error
(
e
.
getMessage
()));
}
catch
(
UnsupportedEncodingException
e
)
{
e
.
printStackTrace
(
listener
.
error
(
e
.
getMessage
()));
}
finally
{
CHECKPOINT
.
report
();
}
...
...
@@ -145,7 +148,7 @@ public class MailSender {
return
b
.
getResult
();
}
protected
MimeMessage
getMail
(
AbstractBuild
<?,
?>
build
,
BuildListener
listener
)
throws
MessagingException
,
InterruptedException
{
protected
MimeMessage
getMail
(
AbstractBuild
<?,
?>
build
,
BuildListener
listener
)
throws
MessagingException
,
UnsupportedEncodingException
,
InterruptedException
{
if
(
build
.
getResult
()
==
Result
.
FAILURE
)
{
return
createFailureMail
(
build
,
listener
);
}
...
...
@@ -169,7 +172,7 @@ public class MailSender {
return
null
;
}
private
MimeMessage
createBackToNormalMail
(
AbstractBuild
<?,
?>
build
,
String
subject
,
BuildListener
listener
)
throws
MessagingException
{
private
MimeMessage
createBackToNormalMail
(
AbstractBuild
<?,
?>
build
,
String
subject
,
BuildListener
listener
)
throws
MessagingException
,
UnsupportedEncodingException
{
MimeMessage
msg
=
createEmptyMail
(
build
,
listener
);
msg
.
setSubject
(
getSubject
(
build
,
Messages
.
MailSender_BackToNormalMail_Subject
(
subject
)),
charset
);
...
...
@@ -180,7 +183,7 @@ public class MailSender {
return
msg
;
}
private
MimeMessage
createUnstableMail
(
AbstractBuild
<?,
?>
build
,
BuildListener
listener
)
throws
MessagingException
{
private
MimeMessage
createUnstableMail
(
AbstractBuild
<?,
?>
build
,
BuildListener
listener
)
throws
MessagingException
,
UnsupportedEncodingException
{
MimeMessage
msg
=
createEmptyMail
(
build
,
listener
);
String
subject
=
Messages
.
MailSender_UnstableMail_Subject
();
...
...
@@ -219,7 +222,7 @@ public class MailSender {
buf
.
append
(
Messages
.
MailSender_Link
(
baseUrl
,
url
)).
append
(
"\n\n"
);
}
private
MimeMessage
createFailureMail
(
AbstractBuild
<?,
?>
build
,
BuildListener
listener
)
throws
MessagingException
,
InterruptedException
{
private
MimeMessage
createFailureMail
(
AbstractBuild
<?,
?>
build
,
BuildListener
listener
)
throws
MessagingException
,
UnsupportedEncodingException
,
InterruptedException
{
MimeMessage
msg
=
createEmptyMail
(
build
,
listener
);
msg
.
setSubject
(
getSubject
(
build
,
Messages
.
MailSender_FailureMail_Subject
()),
charset
);
...
...
@@ -304,19 +307,19 @@ public class MailSender {
return
msg
;
}
private
MimeMessage
createEmptyMail
(
AbstractBuild
<?,
?>
build
,
BuildListener
listener
)
throws
MessagingException
{
private
MimeMessage
createEmptyMail
(
AbstractBuild
<?,
?>
build
,
BuildListener
listener
)
throws
MessagingException
,
UnsupportedEncodingException
{
MimeMessage
msg
=
new
MimeMessage
(
Mailer
.
descriptor
().
createSession
());
// TODO: I'd like to put the URL to the page in here,
// but how do I obtain that?
msg
.
addHeader
(
"X-Jenkins-Job"
,
build
.
getProject
().
getDisplayName
());
msg
.
addHeader
(
"X-Jenkins-Result"
,
build
.
getResult
().
toString
());
msg
.
setContent
(
""
,
"text/plain"
);
msg
.
setFrom
(
new
InternetAddress
(
Mailer
.
descriptor
().
getAdminAddress
()
));
msg
.
setFrom
(
Mailer
.
StringToAddress
(
Mailer
.
descriptor
().
getAdminAddress
(),
charset
));
msg
.
setSentDate
(
new
Date
());
String
replyTo
=
Mailer
.
descriptor
().
getReplyToAddress
();
if
(
StringUtils
.
isNotBlank
(
replyTo
))
{
msg
.
set
Header
(
"Reply-To"
,
replyTo
);
msg
.
set
ReplyTo
(
new
Address
[]{
Mailer
.
StringToAddress
(
replyTo
,
charset
)}
);
}
Set
<
InternetAddress
>
rcp
=
new
LinkedHashSet
<
InternetAddress
>();
...
...
@@ -342,7 +345,7 @@ public class MailSender {
}
try
{
rcp
.
add
(
new
InternetAddress
(
address
));
rcp
.
add
(
Mailer
.
StringToAddress
(
address
,
charset
));
}
catch
(
AddressException
e
)
{
// report bad address, but try to send to other addresses
listener
.
getLogger
().
println
(
"Unable to send to address: "
+
address
);
...
...
@@ -377,7 +380,7 @@ public class MailSender {
return
msg
;
}
void
includeCulpritsOf
(
AbstractProject
upstreamProject
,
AbstractBuild
<?,
?>
currentBuild
,
BuildListener
listener
,
Set
<
InternetAddress
>
recipientList
)
throws
AddressException
{
void
includeCulpritsOf
(
AbstractProject
upstreamProject
,
AbstractBuild
<?,
?>
currentBuild
,
BuildListener
listener
,
Set
<
InternetAddress
>
recipientList
)
throws
AddressException
,
UnsupportedEncodingException
{
AbstractBuild
<?,?>
upstreamBuild
=
currentBuild
.
getUpstreamRelationshipBuild
(
upstreamProject
);
AbstractBuild
<?,?>
previousBuild
=
currentBuild
.
getPreviousBuild
();
AbstractBuild
<?,?>
previousBuildUpstreamBuild
=
previousBuild
!=
null
?
previousBuild
.
getUpstreamRelationshipBuild
(
upstreamProject
)
:
null
;
...
...
@@ -398,14 +401,14 @@ public class MailSender {
}
while
(
b
!=
upstreamBuild
&&
b
!=
null
);
}
private
Set
<
InternetAddress
>
buildCulpritList
(
BuildListener
listener
,
Set
<
User
>
culprits
)
throws
AddressException
{
private
Set
<
InternetAddress
>
buildCulpritList
(
BuildListener
listener
,
Set
<
User
>
culprits
)
throws
AddressException
,
UnsupportedEncodingException
{
Set
<
InternetAddress
>
r
=
new
HashSet
<
InternetAddress
>();
for
(
User
a
:
culprits
)
{
String
adrs
=
Util
.
fixEmpty
(
a
.
getProperty
(
Mailer
.
UserProperty
.
class
).
getAddress
());
if
(
debug
)
listener
.
getLogger
().
println
(
" User "
+
a
.
getId
()+
" -> "
+
adrs
);
if
(
adrs
!=
null
)
r
.
add
(
new
InternetAddress
(
adrs
));
r
.
add
(
Mailer
.
StringToAddress
(
adrs
,
charset
));
else
{
listener
.
getLogger
().
println
(
Messages
.
MailSender_NoAddress
(
a
.
getFullName
()));
}
...
...
core/src/main/java/hudson/tasks/Mailer.java
浏览文件 @
00a221d4
...
...
@@ -50,12 +50,16 @@ import org.kohsuke.stapler.export.Exported;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
java.net.InetAddress
;
import
java.net.UnknownHostException
;
import
java.util.Date
;
import
java.util.Properties
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
java.util.regex.Pattern
;
import
java.util.regex.Matcher
;
import
javax.mail.Address
;
import
javax.mail.Authenticator
;
import
javax.mail.Message
;
import
javax.mail.MessagingException
;
...
...
@@ -141,6 +145,18 @@ public class Mailer extends Notifier {
return
BuildStepMonitor
.
NONE
;
}
private
static
Pattern
ADDRESS_PATTERN
=
Pattern
.
compile
(
"\\s*([^<]*)<([^>]+)>\\s*"
);
public
static
InternetAddress
StringToAddress
(
String
strAddress
,
String
charset
)
throws
AddressException
,
UnsupportedEncodingException
{
Matcher
m
=
ADDRESS_PATTERN
.
matcher
(
strAddress
);
if
(!
m
.
matches
())
{
return
new
InternetAddress
(
strAddress
);
}
String
personal
=
m
.
group
(
1
);
String
address
=
m
.
group
(
2
);
return
new
InternetAddress
(
address
,
personal
,
charset
);
}
/**
* @deprecated as of 1.286
* Use {@link #descriptor()} to obtain the current instance.
...
...
@@ -472,12 +488,12 @@ public class Mailer extends Notifier {
MimeMessage
msg
=
new
MimeMessage
(
createSession
(
smtpServer
,
smtpPort
,
useSsl
,
smtpAuthUserName
,
Secret
.
fromString
(
smtpAuthPassword
)));
msg
.
setSubject
(
Messages
.
Mailer_TestMail_Subject
(++
testEmailCount
),
charset
);
msg
.
setText
(
Messages
.
Mailer_TestMail_Content
(
testEmailCount
,
Jenkins
.
getInstance
().
getDisplayName
()),
charset
);
msg
.
setFrom
(
new
InternetAddress
(
adminAddress
));
msg
.
setFrom
(
StringToAddress
(
adminAddress
,
charset
));
if
(
StringUtils
.
isNotBlank
(
replyToAddress
))
{
msg
.
set
Header
(
"Reply-To"
,
replyToAddress
);
msg
.
set
ReplyTo
(
new
Address
[]{
StringToAddress
(
replyToAddress
,
charset
)}
);
}
msg
.
setSentDate
(
new
Date
());
msg
.
setRecipient
(
Message
.
RecipientType
.
TO
,
new
InternetAddress
(
sendTestMailTo
));
msg
.
setRecipient
(
Message
.
RecipientType
.
TO
,
StringToAddress
(
sendTestMailTo
,
charset
));
Transport
.
send
(
msg
);
return
FormValidation
.
ok
(
Messages
.
Mailer_EmailSentSuccessfully
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录