JavaMail应用实例说明:简单(HTML)邮件的发送 javaMail基础教程下载
说明:1。本实例需要用到javamail-1.4.3和jaf-1_0_2-upd2。附件中有它们的下载,关于它们的介绍可以去google一下。2。使用javaMail需要一个邮件服务器,我使用的是cmail,它很小,试用版的可以用于学习,按装之前请确保你装了IIS服务,因为它自带有一个.NET写的邮件服务。在下面附件中可以下载。
一:简单的邮件发送
<form action="SendText" method="post"><table border="0" align="center" width="80%"><tr><td align="right">From:</td><td><input type="text" name="from"></td></tr><tr><td align="right">To:</td><td><input type="text" name="to"></td></tr><tr><td align="right">Subject:</td><td><input type="text" name="subject"></td></tr><tr><td align="right">Context:</td><td><textarea rows="5" cols="30" name="context"></textarea></td></tr><tr><td align="center" colspan="2"><input type="submit" value="发送"></td></tr></table></form>Servlet如下:
/** * 使用javaMail发送简单的邮件 ** @author 张明学 **/public class SendText extends HttpServlet {/** **/private static final long serialVersionUID = 7107039219761248959L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("GBK");String from = request.getParameter("from");String to = request.getParameter("to");String subject = request.getParameter("subject");String context = request.getParameter("context");// 发送的邮件服务器的地址String mailServer = "PC200904071715";//按装cmail就是你的机器名Properties prop = System.getProperties();// 设置邮件的传输协议prop.put("mail.transport.protocal", "smtp");prop.put("mail.smtp.host", mailServer);prop.put("mail.smtp.port", "25");// 是否通过验证;一般为true,false不能通过验证 prop.put("mail.smtp.auth", "false");// 建立邮件发送的连接// Session 类定义了一个基本邮件会话(session)。所有其它类都是经由这个session 才得以生效。// Session 对象用 java.util.Properties 对象获取信息,如邮件服务器、用户名、密码及整个应用程序中共享的其它信息。// Session类的构造器是私有的(private)。您可以得到单个缺省 session,它能用 getDefaultInstance() 方法被共享:// 或者,您还可以用 getInstance()创建一个独立的 session:Session jmailSession = Session.getDefaultInstance(prop,new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {//需要邮件服务器的管理员账号与密码return new PasswordAuthentication("admin", "");}});// 创建要发送的消息,这由 Message类来完成。因为 Message 是个抽象类,必需用一个子类,多数情况下为 javax.mail.internet.MimeMessage。Message jmailMessage = new MimeMessage(jmailSession);// 设置相关的邮件属性try {// Address 确定信件地址,Address是个抽象类,用的是javax.mail.internet.InternetAddress// 若希望名字紧挨着电子邮件显示,也可以把它传递给构造器:jmailMessage.setFrom(new InternetAddress(from,"admin"));jmailMessage.setFrom(new InternetAddress(from));/** * javax.mail.Message.RecipientType.TO:一对一的发送 * javax.mail.Message.RecipientType.CC:抄送 * javax.mail.Message.RecipientType.BCC:秘密抄送 */jmailMessage.setRecipient(javax.mail.Message.RecipientType.TO,new InternetAddress(to));// 用setSubject()方法设置 subject(主题)jmailMessage.setSubject(subject);jmailMessage.setSentDate(new Date());// 使用 MimeMessage,而且消息是纯文本格式,您就可以用 setText() 方法,它只需要代表实际内容的参数,( MIME 类型缺省为 text/plain)jmailMessage.setText(context);// 邮件发送// 消息发送的最后一部分是使用Transport类。这个类用协议指定的语言发送消息(通常是 SMTP)。它是抽象类,仅调用静态send()方法Transport.send(jmailMessage);} catch (AddressException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}// request.getRequestDispatcher("ok.jsp").forward(request, response);response.sendRedirect("ok.jsp");}} HTML格式的邮件发送:
<form action="SendHtml" method="post"><table border="0" align="center" width="80%"><tr><td align="right">From:</td><td><input type="text" name="from"></td></tr><tr><td align="right">To:</td><td><input type="text" name="to"></td></tr><tr><td align="right">Subject:</td><td><input type="text" name="subject"></td></tr><tr><td align="right">Context:</td><td><textarea rows="5" cols="30" name="context"></textarea></td></tr><tr><td align="right">格式:</td><td><select name="type"><option value="text/plain">文本格式</option><option value="text/html">HTML格式</option></select></td></tr><tr><td align="center" colspan="2"><input type="submit" value="发送"></td></tr></table></form> Servlet如下:
public class SendHtml extends HttpServlet {/** **/private static final long serialVersionUID = -8794915632056125770L;public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("GBK");String from = request.getParameter("from");// 发件人String to = request.getParameter("to");// 收件人String subject = request.getParameter("subject");// 主题String context = request.getParameter("context");// 内容String type = request.getParameter("type");// 邮件服务器的地址String mailServer = "PC200904071715";// 设置邮件的传输协议信息Properties transProp = System.getProperties();// 邮件服务器地址transProp.put("mail.smtp.host", mailServer);// 邮件传输协议中的接收协议:smtptransProp.put("mail.transport.protocol", "smtp");// 是否通过验证transProp.put("mail.smtp.auth", "true");// 服务器端口transProp.put("mail.smtp.port", "25");// 默认端口25// 建立邮件发送的连接javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(transProp, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication("admin", "");}});// 邮件信息载体javax.mail.Message mailMessage = new javax.mail.internet.MimeMessage(mailSession);try {// 设置发件人mailMessage.setFrom(new InternetAddress(from));// 设置收件人mailMessage.setRecipient(RecipientType.TO, new InternetAddress(to));// 多个收件人设置// InternetAddress[] addresss = new InternetAddress[]{new InternetAddress(to)};// mailMessage.setRecipients(RecipientType.TO, addresss);// 设置主题mailMessage.setSubject(subject);// 发送时间mailMessage.setSentDate(new Date());Multipart mp = new MimeMultipart(); MimeBodyPart mbp = new MimeBodyPart();mbp.setContent(context, type+";charset=GB2312");mp.addBodyPart(mbp);mailMessage.setContent(mp);javax.mail.Transport.send(mailMessage);} catch (AddressException e) {e.printStackTrace();} catch (MessagingException e) {e.printStackTrace();}response.sendRedirect("ok.jsp");}}
页:
[1]