以前做过一个项目,需要有这样的功能,即用户申请帐号后,需要得到系统管理员的批准,管理在批准以后会自动加载邮件内容并自动发送邮件给用户注册邮箱。现在很多的网站或系统都有这样的内容,比如注册淘宝,facebook,校内,csdn,注册成功后都会有一封邮件发送给用户,我做的这个很简单,没有确认链接什么的,只是将一个自动加载的内容发送至用户邮箱。
在使用该程序时,可以将发送邮箱服务器,用户名,密码等放到constant或国际化文件等(便于以后维护)文件中。
在使用该程序时,可以将发送邮箱服务器,用户名,密码等放到constant或国际化文件等(便于以后维护)文件中。
/**
*
管理员
实现邮件发送功能
*
若成功,进入了发送邮件成功页面
如果有错误,跳转到错误提醒界面
*/
public
ActionForward execute(ActionMapping mapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response)
throws
Exception {
MessageResources messages = getResources(request);
HttpSession httpSession = request.getSession();
EmailForm emailForm = (EmailForm) actionForm;
if
(httpSession ==
null
) {
logger.warn(StringUtil.getLogString(
"
管理员
"
,
"
超时,需要重新登录。
"
));
return
mapping.findForward(
"timeout"
);
}
//
必须是管理员才允许操作,否则说明是非法登录
//
发送方信息
final
String fromEmail = messages.getMessage(
"FromEmail"
);
final
String fromEmailName = messages.getMessage(
"FromEmailName"
);
final
String fromEmailPwd = messages.getMessage(
"FromEmailPwd"
);
final
String smtpHost = messages.getMessage(
"SmtpHost"
);
//
接收方信息
String subjects = emailForm.getSubject().trim();
String texts = emailForm.getText().trim();
String email_to =emailForm.getEmail().trim();
try
{
Properties props =
new
Properties();
Transport transport;
//
设置
SMTP
服务器
props.put(
"mail.smtp.host"
, smtpHost);
//
指定是否需要
SMTP
验证
props.put(
"mail.smtp.auth"
,
"true"
);
props.put(
"mail.smtp.starttls.enable"
,
"true"
);
/*
获取邮件会话对象
*/
//
将邮件的
props
属性和
Authenticator
属性(密码验证)放在
session
中。
Session session = Session.getInstance(props,
new
Authenticator() {
public
PasswordAuthentication getPasswordAuthentication() {
return
new
PasswordAuthentication(fromEmailName,
fromEmailPwd);
}
});
Message newMessage =
null
;
try
{
//
创建
mime
邮件对象
newMessage =
new
MimeMessage(session);
}
catch
(RuntimeException e) {
e.printStackTrace();
response.setContentType(
"text/html;charset=GBK"
);
//
设置发送到客户端的响应的内容类型
PrintWriter out = response.getWriter();
String alertmsg = messages
.getMessage(
"
发送失败
"
);
//
发送失败
out.println(
"<script>alert('"
+ alertmsg +
"')</script>"
);
out.println((
"<script> window.close();</script>"
));
//
关闭窗口
out.println(
"<script>window.location='teamAdmin.do'</script>"
);
//
重新回到某页面
out.println(
"<script>location.reload()</script>"
);
//
强迫浏览器刷新当前页面
out.flush();
return
null
;
}
newMessage.setFrom(
new
InternetAddress(fromEmail));
String[] email_team =
null
;
email_team = email_to.split(
";"
);
/*
如果接收邮箱是多个,那么就循环发送
*/
for
(
int
i = 0; i < email_team.length; i++) {
String email =
null
;
email = email_team[i];
//
设置邮件收件人,主题,内容,正文
newMessage.setRecipient(Message.RecipientType.TO,
new
InternetAddress(email));
newMessage.setSubject(subjects);
//
文件标题
newMessage.setSentDate(
new
Date());
//
发送时间
newMessage.setText(texts);
//
创建
smtp
邮件协议发送对象
transport = session.getTransport(
"smtp"
);
// transport.send()
方法中实现取得与邮件服务器的连接,和通过邮件服务器发送邮件。
transport.send(newMessage);
}
}
catch
(AuthenticationFailedException e)
{
response.setContentType(
"text/html;charset=GBK"
);
PrintWriter out = response.getWriter();
String alertmsg = messages.getMessage(
"
密码有误,发送失败
"
);
out.println(
"<script>alert('"
+ alertmsg +
"')</script>"
);
out.println(
"<script>window.location='teamAdmin.do'</script>"
);
out.flush();
return
null
;
}
catch
(MessagingException e)
{
response.setContentType(
"text/html;charset=GBK"
);
PrintWriter out = response.getWriter();
String alertmsg = messages.getMessage(
"
网络链接有误,发送失败
"
);
out.println(
"<script>alert('"
+ alertmsg +
"')</script>"
);
out.println(
"<script>window.location='teamAdmin.do'</script>"
);
out.flush();
return
null
;
}
catch
(Exception e)
{
response.setContentType(
"text/html;charset=GBK"
);
PrintWriter out = response.getWriter();
String alertmsg = messages.getMessage(
"
发送失败
"
);
out.println(
"<script>alert('"
+ alertmsg +
"')</script>"
);
out.println(
"<script>window.location='teamAdmin.do'</script>"
);
out.flush();
return
null
;
}
response.setContentType(
"text/html;charset=GBK"
);
PrintWriter out = response.getWriter();
String alertmsg =
"
发送邮件成功!
"
;
out.println(
"<script>alert('"
+ alertmsg +
"')</script>"
);
out.println(
"<script>window.location='teamAdmin.do'</script>"
);
out.flush();
return
null
;
}
}
本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/179158,如需转载请自行联系原作者