JavaMail是java技术当中用来发送邮件和接收邮件的API,JavaMail在java开发中是应用比较
广泛的,很多时候,我们都需要邮件发送和接收的功能。
如我们开发的一个网络书店,当用户下了订单之后,我们都会把订单信息发送到用户的邮箱当中
这是就可以使用JavaMail技术了。
下载JavaMail:
http://java.sun.com/products/javamail/index.html
得到:javamail1_4_4.zip 解压;mail.jar
测试代码一:
SendMail.java
代码:
package webbook.chapter16;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class SendMail {
public static void main(String[] args) {
try {
Properties props = new Properties();
Session session = Session.getInstance(props, null);
// 在属性中设置发送邮件服务器地址与协议
props.put("mail.host", "127.0.0.1");
props.put("mail.transport.protocol", "smtp");
Message message = new MimeMessage(session);
// 设置发件人
message.setFrom(new InternetAddress("hongtenzone@foxmail.com"));
// 设置收件人, Message.RecipientType.CC是设置抄送者
message.setRecipient(Message.RecipientType.TO, new InternetAddress("receiver@163.com"));
message.setRecipient(Message.RecipientType.CC, new InternetAddress("web@foxmail.com"));
message.setSubject("问候"); // 邮件主题
message.setSentDate(new Date()); // 发送时间
message.setText("这是一个测试!\n哈哈,你好!\n呵呵!"); //内容
Transport.send(message);
} catch (MessagingException m) {
m.printStackTrace();
}
}
}
说明;
这个程序有很大的限制:
首先,在本机要装一个邮件服务器,也可以使用其他人的邮件服务器,比如你公司专有的邮件服务器。
还可以使用免费的邮件服务器,如:sina,搜狐,网易等,他们都有免费邮件服务,但是需要一些身份验证,
有一些麻烦……
那有没有其他方法呢?
测试代码二:
下载Apache Commons Email组件
下载地址:http://commons.apache.org/mail/
下载:commons-email-1.2-bin.zip 得到:commons-email-1.2.jar
新建web project项目:
Build Path: commons-email-1.2.jar javaMail1.2.jar
sendMail.jsp
代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head><title>Send E-Mail Form</title></head>
<style>* {font-family:"宋体" ; font-size: 14px }</style>
<body>
<p><font color="red">发送邮件的程序</font></p>
<form action="<%=request.getContextPath()%>/servlet/sendMail" method="post">
<table cellspacing="2" cellpadding="2" border="0">
<tr><td>收件人</td>
<td><input type="text" name="to" size="30"></td>
</tr>
<tr><td>发件人</td>
<td><input type="text" name="from" size="30"></td>
</tr>
<tr><td>主题</td>
<td><input type="text" name="subject" size="30"></td>
</tr>
<tr><td valign="top">正文</td>
<td><textarea cols="50" rows="15" name="body"></textarea></td>
</tr>
<tr><td></td><td>
<input type="submit" value="提交"><input type="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
SendMailServlet.java
代码:
package webbook.chapter16;
import java.io.IOException;
import javax.servlet.http.*;
import javax.servlet.ServletException;
import org.apache.commons.mail.*;
public class SendMailServlet extends HttpServlet {
private static final long serialVersionUID = -3302031686208755627L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.sina.com");
email.setAuthentication("web08", "web2008");
try {
email.setCharset("UTF-8");
email.addTo(request.getParameter("to"));
email.setFrom(request.getParameter("from"));
email.setSubject(request.getParameter("subject"));
email.setMsg(request.getParameter("body"));
email.send();
request.setAttribute("sendmail.message", "邮件发送成功!");
} catch (EmailException e) {
e.printStackTrace();
request.setAttribute("sendmail.message", "邮件发送不成功!");
}
request.getRequestDispatcher("/sendResult.jsp").forward(request, response);
}
}
sendResult.jsp
代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head><title>Send E-Mail result page</title></head>
<style>
* { font-family:"宋体" ; font-size: 14px }
</style>
<body>
<p><font color="red">${requestScope['sendmail.message']}</font></p>
<p><a href="<%=request.getContextPath()%>/sendMail.jsp">返回</a></p>
</body>
</html>