实现邮件收发功能需要3个jar包:
1.JavaMail组件保内的mail.jar和smtp.jar包
2.JAF组件包里的activition.jar。
复制到WebRoot/WEB-INF/lib目录下。
一、编写index.jsp页面,具体代码如下:
1 <%@ page language="java" contentType="text/html; charset=gb2312"
2 pageEncoding="gb2312"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
7 <title>welcome</title>
8 </head>
9 <body>
10 <form action="sendMail.jsp" method="post" name="form1">
11 <table width="75" border="0" align="center" cellspacing="1"
12 bgcolor="#006600" class="black">
13 <tr bgcolor="#ffffff">
14 <td width="24%">收信人地址:</td>
15 <td width="76%"><input name="to" type="text" id="to"></td>
16 </tr>
17 <tr bgcolor="#ffffff">
18 <td >主题:</td>
19 <td ><input name="title" type="text" id="title"></td>
20 </tr>
21 <tr>
22 <td height="18" colspan="2" bgcolor="#ffffff">
23 信件类型
24 <select name="emailtype" id="emailtype">
25 <option value="text/plain" selected>Text</option>
26 <option value="text/html" selected>Html</option>
27 </select>
28 </td>
29 </tr>
30 <tr>
31 <td height="53" colspan="2" bgcolor="#ffffff">
32 <textarea rows="5" cols="50" name="content" id="content"></textarea>
33 </td>
34 </tr>
35 <tr align="center">
36 <td colspan="2" bgcolor="#ffffff">
37 附件1(自定义):
38 <input name="fj1" type="text" id="fj1">
39 (输入文本信息)
40 </td>
41 </tr>
42 <tr align="center" valign="bottom">
43 <td colspan="2" bgcolor="#ffffff">
44 附件2(本地):
45 <input name="fj2" type="file" id="fj2" size="10">
46 </td>
47 </tr>
48 <tr align="center" >
49 <td colspan="2" bgcolor="#ffffff">
50 附件3(远程):
51 <input name="fj3" type="text" id="fj3" value="http://">
52 (输入URL)
53 </td>
54 </tr>
55 <tr align="center" >
56 <td colspan="2" bgcolor="#ffffff">
57
58 <input name="submit" type="submit" value="发送">
59 <input name="submit2" type="reset" value="重置">
60 </td>
61 </tr>
62 </table>
63 </form>
64 </body>
65 </html>
二、创建sendMail.jsp页面,具体代码如下:
<%@ page language="java" contentType="text/html; charset=gb2312"
pageEncoding="gb2312"%>
<%request.setCharacterEncoding("gb2312"); %>
<%@ page import="java.util.*,javax.mail.*" %>
<%@ page import="javax.mail.internet.*"%>
<%@ page import="javax.activation.*" %>
<%@ page import="java.net.*" %>
<!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=gb2312">
<title>Insert title here</title>
</head>
<body>
<%
try{
String tto=request.getParameter("to");
String ttitle=request.getParameter("title");
String emailtype=request.getParameter("emailtype");
String tcontent=request.getParameter("content");
String tfj1=request.getParameter("fj1");
String tfj2=request.getParameter("fj2");
String tfj3=request.getParameter("fj3");
//声明properities存储发件服务器信息
Properties props=new Properties();
props.put("mail.smtp.host", "smtp.qq.com");
props.put("mail.smtp.auth", "true");
//创建邮件回话
Session s=Session.getInstance(props);
s.setDebug(true);
//创建一个消息对象
MimeMessage message=new MimeMessage(s);
InternetAddress from=new InternetAddress("393743083@qq.com");
message.setFrom(from);
InternetAddress to=new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO, to);
message.setSubject(ttitle);
message.setSentDate(new Date());
Multipart mm = new MimeMultipart();
BodyPart mdp=new MimeBodyPart();
mdp.setContent(tcontent, emailtype+";charset=gb2312");
mm.addBodyPart(mdp);
//附件1
mdp=new MimeBodyPart();
DataHandler dh=new DataHandler(tfj1,"text/plain;charset=gb2312");
mdp.setFileName("text.txt");
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);
//附件2
mdp=new MimeBodyPart();
FileDataSource fds=new FileDataSource(tfj2);
dh=new DataHandler(fds);
int ddd=tfj2.lastIndexOf("\\");
String fname=tfj2.substring(ddd);
String ffname=new String(fname.getBytes("gb2312"),"ISO8859-1");
mdp.setFileName(ffname);
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);
//附件3
mdp=new MimeBodyPart();
URL urlfj=new URL(tfj3);
URLDataSource ur=new URLDataSource(urlfj);
dh=new DataHandler(ur);
int ttt=tfj3.lastIndexOf("/");
String urlname=tfj3.substring(ttt);
mdp.setFileName(urlname);
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);
message.setContent(mm);
message.saveChanges();
//发送邮件
Transport transport=s.getTransport("smtp");
transport.connect("smtp.qq.com",用户名,密码);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
%>
<div align="center">
<p><font color="#ff6600">发送成功</font></p>
<br>
<a href="sendMail.jsp">再来一封</a>
</div>
<%
}catch(MessagingException e){
out.println(e.toString());
}
%>
</body>
</html>
注:腾讯邮箱需要开通smtp功能。