1.JavaMail组件
JavaMail下载:http://www.oracle.com/technetwork/java/javamail/index-138643.html?ssSourceSiteId=ocomen
核心的类和接口:
javax.mail.Session
javax.mail.Message
javax.mail.Address
javax.mail.Authenticator
javax.mail.Transport
javax.mail.Store
javax.mail.Folder
2.简单代码实例
前提是电脑安装了邮件客户端
package com.v512; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendMail { public static void main(String[] args) { 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); try { message.setFrom(new InternetAddress("liuwei8809@163.com")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("zhangliguo_china@sina.com")); message.setSubject("你好吗?"); message.setText("JavaMail发送邮件测试。"); Transport.send(message); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } }
3.使用其他的邮件服务器
大型的网站一般都会提供邮件服务器,例如新浪,搜狐,网易等等
使用Apache Commons 中的 Email组件,下载地址:http://commons.apache.org/email/download_email.cgi
使用这个组件可以比较轻松地实现邮件的发送
4.带附件的邮件发送实例
步骤一:编写页面
发送邮件页面:sendAttachmentMail.jsp
<%@ page pageEncoding="UTF-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>发送邮件</title> </head> <body> <p align="center">发送邮件的程序</p> <form id="form1" name="form1" method="post" action="<%=request.getContextPath()%>/servlet/sendAttachmentMail" enctype="multipart/form-data"> <table width="516" height="253" border="0" align="center"> <tr> <td>收件人:</td> <td><label> <input type="text" name="to" id="to" /> </label></td> </tr> <tr> <td>发件人:</td> <td><label> <input type="text" name="from" id="from" /> </label></td> </tr> <tr> <td>主题:</td> <td><label> <input type="text" name="subject" id="subject" /> </label></td> </tr> <tr> <td>选择附件:</td> <td><label> <input type="file" name="attachment" id="file" /> </label></td> </tr> <tr> <td>内容:</td> <td><label> <textarea name="content" id="content" cols="45" rows="8"></textarea> </label></td> </tr> <tr> <td><label> <input type="submit" name="button" id="button" value="提交" /> </label></td> <td><label> <input type="reset" name="button2" id="button2" value="重置" /> </label></td> </tr> </table> </form> <p align="center"> </p> <p> </p> </body> </html>
显示发送结果的页面:
<%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>display upload result</title> </head> <body> <center> <p> ${requestScope['sendmail.message'] }</p> </center> </body> </html>
步骤二:邮件发送的处理:sendAttachmentMailServlet
package com.v512; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.mail.EmailAttachment; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.MultiPartEmail; public class SendAttachmentMailServlet extends HttpServlet { private static final long serialVersionUID = -1408700020471642036L; private ServletContext sc; private String savePath; private Map<String, String> parameters = new HashMap<String, String>(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); File file = this.doAttachment(request); MultiPartEmail email = new MultiPartEmail(); email.setCharset("UTF-8");
email.setHostName("smtp.sina.com"); email.setAuthentication("web08", "web2008"); //特别注意这里!!!!设置邮件服务器和身份的验证
try { email.addTo(parameters.get("to")); email.setFrom(parameters.get("from")); email.setSubject(parameters.get("subject")); email.setMsg(parameters.get("content")); if (file != null) { EmailAttachment attachment = new EmailAttachment(); attachment.setPath(file.getPath()); attachment.setDisposition(EmailAttachment.ATTACHMENT); attachment.setName(file.getName()); email.attach(attachment); } email.send(); request.setAttribute("sendmail.message", "邮件发送成功!"); } catch (EmailException e) { e.printStackTrace(); request.setAttribute("sendmail.message", "邮件发送不成功!"); } request.getRequestDispatcher("/sendResult.jsp").forward(request, response); } public File doAttachment(HttpServletRequest request) throws ServletException, IOException { File file = null; DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { List items = upload.parseRequest(request); Iterator it = items.iterator(); while (it.hasNext()) { FileItem item = (FileItem) it.next(); if (item.isFormField()) { parameters .put(item.getFieldName(), item.getString("UTF-8")); } else { if (item.getName() != null && !item.getName().equals("")) { File tempFile = new File(item.getName()); file = new File(sc.getRealPath("/") + savePath, tempFile.getName()); item.write(file); } } } } catch (Exception e) { e.printStackTrace(); request.setAttribute("upload.message", "上传文件不成功!"); } return file; } public void init(ServletConfig config) { savePath = config.getInitParameter("savePath"); sc = config.getServletContext(); } }
步骤三:修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.v512.UploadServlet</servlet-class> <init-param> <param-name>savePath</param-name> <param-value>uploads</param-value> </init-param> </servlet> <servlet> <servlet-name>SendMailServlet</servlet-name> <servlet-class>com.v512.SendMailServlet</servlet-class> </servlet> <servlet> <servlet-name>SendAttachmentMailServlet</servlet-name> <servlet-class>com.v512.SendAttachmentMailServlet</servlet-class> <init-param> <param-name>savePath</param-name> <param-value>uploads</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/servlet/upload</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>SendMailServlet</servlet-name> <url-pattern>/servlet/sendMail</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>SendAttachmentMailServlet</servlet-name> <url-pattern>/servlet/sendAttachmentMail</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
至此,可以添加附件的邮件发送程序就OK啦!