邮件发送程序V1.2

这是一个Servlet应用。。

首先是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>SendAttachmentMailServlet</servlet-name> <servlet-class>com.jadyer.servlet.SendAttachmentMailServlet</servlet-class> <!-- 指定邮件发送成功后,邮件中的附件,在服务器上的存储目录 --> <init-param> <param-name>savePath</param-name> <param-value>upload</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>SendAttachmentMailServlet</servlet-name> <url-pattern>/servlet/sendAttachmentMail</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>sendAttachmentMail.jsp</welcome-file> </welcome-file-list> </web-app>

然后是用于输入邮件信息的sendAttachmentMail.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <center> <h2><font color="blue">邮件发送程序V1.2</font></h2> <form action="<%=request.getContextPath()%>/servlet/sendAttachmentMail" enctype="multipart/form-data" method="POST"> <table border="22"> <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>附件</td> <td><input type="file" name="attachment" size="30"></td> </tr> <tr> <td valign="top">正文</td> <td><textarea cols="39" rows="8" name="body"></textarea></td> </tr> <tr> <td>&nbsp;</td> <td><input type="submit" value="提交"></td> </tr> </table> </form> </center>

接着是用于显示邮件发送结果的sendResult.jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"%> <h2><font color="red">${requestScope['sendmail.message']}</font></h2>

最后是用于处理带有附件的邮件发送的核心Servlet

package com.jadyer.servlet; 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; /** * 邮件发送程序V1.2 * @see ------------------------------------------------------------------------- * @see 本程序运行环境为JavaSE6.0和JavaEE5.0 * @see 本程序可以实现发送带有附件的邮件的功能 * @see ------------------------------------------------------------------------- * @see 这里通过使用commons-email和commons-fileupload和commons-io组件以及mail.jar包 * @see 实现一个基于Web的可以发送带附件的邮件的程序 * @see 本程序附件会保存在//tomcat6//webapps//Web项目//upload// * @see ------------------------------------------------------------------------- */ public class SendAttachmentMailServlet extends HttpServlet { private static final long serialVersionUID = -2469479208331145615L; private String savePath; ServletContext sc; private Map<String, String> parameters = new HashMap<String, String>(); public void init(ServletConfig config) { savePath = config.getInitParameter("savePath"); sc = config.getServletContext(); } public void doGst(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); try { //生成MultiPartEmail类的对象email //这里MultiPartEmail类封装的是能发送带附件邮件的行为,而SimpleEmail类封装的是发送不带附件的邮件的行为 MultiPartEmail email = new MultiPartEmail(); //设置邮件内容的文字编码 email.setCharset("UTF-8"); //设置smtp服务器的名称。这里设置为网易Yeah的免费邮件服务器的地址 email.setHostName("smtp.yeah.net"); //设置使用这个服务器发送邮件所需要的用户名与密码 //该用户必须是该免费邮件服务器上的合法用户,这里使用的就是我的邮箱:jadyer@yeah.net email.setAuthentication("jadyer", "mypassword"); //设置收件人 email.addTo(parameters.get("to")); //设置发件人 email.setFrom(parameters.get("from")); //设置邮件主题 email.setSubject(parameters.get("subject")); //设置邮件正文 email.setMsg(parameters.get("body")); if (file != null) { //EmailAttachment类的对象就代表附件 //如果发送多个附件,就生成多个EmailAttachment类的对象 EmailAttachment attachment = new EmailAttachment(); //设定附件的路径 attachment.setPath(file.getPath()); //设定附件的类型 attachment.setDisposition(EmailAttachment.ATTACHMENT); //设定附件的名字 attachment.setName(file.getName()); //将附件添加到当前的email对象中 email.attach(attachment); } email.send(); //调用email对象的send()方法完成邮件的发送 request.setAttribute("sendmail.message", "恭喜您!邮件发送成功!"); } catch (EmailException e) { e.printStackTrace(); request.setAttribute("sendmail.message", "很遗憾!邮件发送失败!"); } request.getRequestDispatcher("/sendResult.jsp").forward(request, response); } /** * 完成附件的上传功能,即从客户机上传到服务器 * 如果对commons-fileupload实现文件上传有些疑问的话,可以参考我的另一篇博文 * http://blog.csdn.net/jadyer/archive/2011/01/11/6129399.aspx */ 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 itr = items.iterator(); while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); if (item.isFormField()) { //将传过来的文本域(表单)的参数名和参数值保存在Map对象中 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(); } return file; } }

注意:在该Web Project中测试时,不要忘记先要在WebRoot目录下新建upload目录

注意:该upload目录主要是用来保存所发送的邮件中的附件的

注意:项目发布到Tomcat中后,该upload目录会自动同步到Tomcat//webapps//Web项目//根目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值