用JavaMail实现邮件自动回复功能代码

JavaMail类:

package com.gwl.javamail;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.sun.mail.iap.Response;

public class JavaMail
{
 private String host;       //邮件服务器地址
 private int port;          //端口号
 private String username;   //邮箱名称
 private String password;   //邮箱密码
 private String contentType;//内容类型
 
 //默认构造函数
 public JavaMail(){
  
 }

 /**
  * 初始化服务器信息
  * @param host
  * @param port
  * @param usermame
  * @param password
  */
 public JavaMail(String host,int port,String username,String password,String contentType){
  this.host=host.trim();
  this.port=port;
  this.username=username.trim();
  this.password=password.trim();
  this.contentType=contentType.trim();
 }
 
    /**
     * 获得的一个Sessions对象
     * @param sign true:调试 false:不调试
     * @return
     * @throws NamingException
     */
 private  Session getSession(boolean sign) throws NamingException{
  Context initCtx = new InitialContext();
  Context envCtx = (Context) initCtx.lookup("java:comp/env");
  Session session = (Session)envCtx.lookup("mail/Dog");
  session.setDebug(sign);
  return session;
 }
 
 /**
  * 发送邮件
  * @param title 邮件标题
  * @param content 内容
  * @param from 发送者
  * @param to   接收者
  * @param sign true:调试 false:不调试
  * @throws NamingException JNDI异常
  * @throws AddressException 邮件地址异常
  * @throws UnsupportedEncodingException MimeUtils工具异常
  * @throws MessagingException
  */
 public void sendMail(String title,String content,Map<String,String> from,Map<String,String> to,Map<String,String> reply,RecipientType rt,boolean sign,boolean rsign) throws NamingException, AddressException, MessagingException, UnsupportedEncodingException{
  Session session=getSession(sign);
  
  StringBuffer sb=new StringBuffer();
     for (String it :to.keySet()) {
   String item=MimeUtility.encodeText(it.trim())+"<"+to.get(it.trim())+">";
   sb.append(item+",");
  }
  sb.substring(0,sb.length()-1);
  
  Message message = new MimeMessage(session);
  String hh=from.keySet().iterator().next().trim();
  message.setFrom(new InternetAddress(MimeUtility.encodeText(hh)+"<"+from.get(hh)+">"));
  message.setSubject(title.trim());
  message.setContent(content.trim(),contentType);
  message.setSentDate(new Date());
  message.setRecipients(rt, InternetAddress.parse(sb.toString()));
  
  if(rsign){
   if(reply!=null)
   message.setReplyTo(InternetAddress.parse(reply.values().iterator().next().trim()));
   else
      message.setReplyTo(InternetAddress.parse(from.get(hh)));
  }
  Transport transport=session.getTransport();
  transport.connect(host,port,username,password);
    
  transport.sendMessage(message,InternetAddress.parse(sb.toString()));
  transport.close();    
 }
}

mail.java servlet调用类:

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.ResourceBundle;

import javax.mail.MessagingException;
import javax.mail.Message.RecipientType;
import javax.mail.internet.AddressException;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.omg.CORBA.Request;

import com.gwl.javamail.JavaMail;


public class mail extends HttpServlet
{

 /**
  * Constructor of the object.
  */
 public mail()
 {
  super();
 }

 /**
  * Destruction of the servlet. <br>
  */
 public void destroy()
 {
  super.destroy(); // Just puts "destroy" string in log
  // Put your code here
 }

 /**
  * The doGet method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to get.
  *
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException
 {
  try {
   this.doPost(request, response);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 /**
  * The doPost method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to post.
  *
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws IOException
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException
 {
        PrintWriter out = response.getWriter();
        out.print(request.getAttribute("gwl1").toString()+" "+request.getAttribute("gwl2").toString());
       
  JavaMail jm=new JavaMail("smtp.163.com",25,"123","123","text/html;charset=gbk");
  HashMap from=new HashMap<String,String>();
  from.put("郭德纲", "123@163.com"); 
       
        HashMap to=new HashMap<String,String>();
        to.put("启智网络",request.getAttribute("gwl1").toString());
        to.put("测试",request.getAttribute("gwl2").toString());
       
        HashMap reply=new HashMap<String,String>();
        reply.put("回复地址",123@qq.com);
  try { 
   ResourceBundle rb=ResourceBundle.getBundle("mail");
   MessageFormat mf=new MessageFormat("");
   mf.applyPattern(rb.getString("message")); 
   String ms=mf.format(new Object[]{"郭德纲","TY002-1","中国的明天","郭德纲","029-5544573"});
   jm.sendMail("欢迎投稿",ms,from,to,reply,RecipientType.TO,true,true);
  } catch (AddressException e) {
      System.out.print(e.getMessage());
  } catch (UnsupportedEncodingException e) {
      System.out.print(e.getMessage());
  } catch (NamingException e) {
      System.out.print(e.getMessage());
  } catch (MessagingException e) {
      System.out.print(e.getMessage());
  }

 
 }

 /**
  * Initialization of the servlet. <br>
  *
  * @throws ServletException if an error occurs
  */
 public void init() throws ServletException
 {

 }

}

Session tomcat配置文件:

context.xml:

 

<Context>
  <Resource name="mail/Dog" auth="Container"
            type="javax.mail.Session"
            mail.smtp.host="smtp.163.com"
            mail.transport.protocol="smtp"
            mail.smtp.auth="true"
            />
</Context>

 

mail.properties邮件模板

<meta/ http-equiv = "Content-Type" content="text/html; charset=gbk" />

Email(s) = ganplane@gmail.com, ,<br />

message = <html>/r/n<head>/r/n<meta http-equiv="Content-Type" content="text/html; charset=gbk" />/r/n<title></title>/r/n</head>/r/n<body>/r/n<p>{0}/u60A8/u597D!<br />/r/n  /u60A8/u5411/u4E2D/u56FD/u7535/u5DE5/u6280/u672F/u5B66/u4F1A/u7535/u529B/u7535/u5B50/u5B66/u4F1A/u7B2C/u5341/u4E00/u5C4A/u5B66/u672F/u5E74/u4F1A/u6295/u7A3F/u6210/u529F/uFF01.<br />/r/n  /u60A8/u6295/u7A3F/u6587/u7AE0/u7684/u7F16/u53F7/u4E3A/uFF1A [{1}]. /u8BF7/u60A8/u7262/u8BB0/u8FD9/u4E2A/u7F16/u53F7/uFF0C/u5728/u4EE5/u540E/u7684/u8054/u7CFB/u4E2D/uFF0C/u6211/u4EEC/u5C06/u4F7F/u7528/u8FD9/u4E2A/u6587/u7AE0/u7F16/u53F7/u3002<br />/r/n  /u6240/u6709/u6295/u7A3F/u8BBA/u6587/u90FD/u5C06/u7531/u6709/u5173/u4E13/u5BB6/u8FDB/u884C/u8BC4/u5BA1/u3002/u8BF7/u60A8/u6CE8/u610F/uFF0C/u8BBA/u6587/u5F55/u7528/u901A/u77E5/u53CA/u6B63/u5F0F/u8BBA/u6587/u683C/u5F0F/u8981/u6C42/u90FD/u5C06/u4E8E2008/u5E748/u670815/u65E5/u53D1/u51FA/uFF0C/u800C/u8BBA/u6587/u6B63/u5F0F/u7A3F/u63D0/u4EA4/u7684/u622A/u6B62/u65E5/u671F/u4E3A2008/u5E749/u670830/u65E5/u3002</p>/r/n<p>/u60A8/u6295/u7A3F/u6587/u7AE0/u7684/u4FE1/u606F/u5982/u4E0B/uFF1A<br />/r/n  /u9898/u76EE: {2} <br />/r/n  /u4F5C/u8005/uFF1A{3} <br />/r/n  /u8054/u7CFB/u65B9/u5F0F/uFF1A{4} <br />/r/n  Email(s): ganplane@gmail.com, ,<br />/r/n  /u6587/u7AE0/u5206/u7C7B /uFF1A1) /u5404/u79CD/u65B0/u578B/u7535/u529B/u534A/u5BFC/u4F53/u5668/u4EF6(/u542B/u5404/u7C7B/u6A21/u5757)/u7684/u8BBE/u8BA1/u3001/u5DE5/u827A/u3001/u7279/u6027/u5206/u6790/u3001/u6D4B/u8BD5/u3001/u53EF/u9760/u6027/u7B49/u6280/u672F<br />/r/n  /u5173/u4E8E/u5E74/u4F1A/u7684/u6700/u65B0/u6D88/u606F/u8BF7/u5173/u6CE8: www.pe2008.xjtu.edu.cn or pe2008.pes.org.cn<br />/r/n  /u5982/u6709/u95EE/u9898/u8BF7/u8054/u7CFB/uFF1A cpes_ac@mail.xjtu.edu.</p>/r/n</body>/r/n</html>

u5173u4E8Eu5E74u4F1Au7684u6700u65B0u6D88u606Fu8BF7u5173u6CE8 = www.pe2008.xjtu.edu.cn or pe2008.pes.org.cn<br />

u9898u76EE = {2} <br />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值