在开发项目或软件产品功能的过程中,经常遇到需要将数据、提醒、公告等通过邮件的方式发送给客户或管理人员,也就是通过邮件的发送来执行业务的规则。
java mail用来建立邮件和消息应用程序。它可以方便的执行一些常用的邮件传输,支持PO3,IMAP,SMTP,既可以作为JavaSE平台的可选包,也可以在JavaEE平台中使用。
目录
④使用java mail实现邮件的发送--设计一个简单的邮件发送系统
1.java mail环境的构建
直接使用java mail实现邮件的发送比较复杂,这里采用Commons-Email实现,Commons-Email是Apache提供的一个开源的API,是对java mail的封装,使用它时用到的Jar包包括:mail.jar,additionnal.jar,activation.jar和commons-emails-1.2.jar,主要包括四个类。
SimpleEmail | 发送简单的email,不能添加附件 |
MultiPartEmail | 发送文本邮件,可以添加多个附件 |
HtmlEmail | 发送HTML格式的邮件,同时具有MultiPartEmail类的所有功能 |
EmailAttchment | 附件类,可以添加本地资源,也可以指定网络资源,在发送时将网络资源下载发送 |
2.发送邮件
①发送简单的邮件
SimpleEmail email=new SimpleEmail();
email.setHostName("smtp.163.com"); //设置邮箱服务器
email.setAuthentication("用户名","密码")
email.addTo("***@**.com"); //收件人
email.setFrom("***@**.com");//发件人
email.setSubject("Subject");//邮件主题
email.setMsg("你好");//邮件内容
email.send(); //发送邮件
②发送带附件的邮件
EmailAttachment attachment=NEW EmailAttachment();
attachment.setPath("附件路径");
attachment.setDisposition(EmailAttachment.ATTACHMENT);
MultiPartEmail email=new MultiPartEmail();
email.setHostName("smtp.163.com"); //设置邮箱服务器
email.setAuthentication("用户名","密码")
email.addTo("***@**.com"); //收件人
email.setFrom("***@**.com");//发件人
email.setSubject("Subject");//邮件主题
email.setMsg("你好");//邮件内容
email.attach(attachment);
email.send(); //发送邮件
③发送HTML形式的邮件
HtmlEmail email=new HtmlEmail();
email.setHostName("smtp.163.com"); //设置邮箱服务器
email.setAuthentication("用户名","密码")
email.addTo("***@**.com"); //收件人
email.setFrom("***@**.com");//发件人
email.setSubject("Subject");//邮件主题
email.setMsg("<font color='red'>123</font>");//邮件内容
email.send(); //发送邮件
④使用java mail实现邮件的发送--设计一个简单的邮件发送系统
mail.jsp--jsp文件, 完成信息的获取与传递
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>发送文本格式的邮件</title>
</head>
<body>
<h1 align="center">发送文本格式的邮件</h1>
<form action="sendmail" method="post" name="form1">
<table width="48%" border="1" align="center" cellspacing="1">
<tr><td width="20%" height="30">收件人地址:</td>
<td width="80%" height="30"><input name="to" type="text" size="40"></td></tr>
<tr><td height="30">标题:</td>
<td height="30"><input name="title" type="text" size="40"></td></tr>
<tr><td height="30">邮件内容:</td>
<td height="30"><textarea name="content" cols="60" rows="40" id="content"></textarea></td></tr>
<tr align="center"><td colspan="2" height="40">
<input type="submit" value="发送">
<input type="reset" value="重输">
</td></tr>
</table>
</form>
</body>
</html>
sendmail.java--servlet类,完成工程的操作
package bean;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
/**
* Servlet implementation class sendmail
*/
@WebServlet("/sendmail")
public class sendmail extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public sendmail() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
request.setCharacterEncoding("UTF-8");
SimpleEmail email=new SimpleEmail();
email.setHostName("smtp.163.com");
email.setAuthentication("用户名", "密码");//需要自己填写
try {
email.addTo(request.getParameter("to"));
email.setFrom("用户邮箱");//需要自己填写
email.setSubject(request.getParameter("title"));
email.setMsg(request.getParameter("content"));
email.send();
out.println("邮件发送成功");
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
out.println("邮件发送失败");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}