使用Jmai发送邮件

private MimeMessage mimeMsg; //MIME邮件对象   
    private Session session; //邮件会话对象   
    private Properties props; //系统属性   
    private boolean needAuth = false; //smtp是否需要认证   
    //smtp认证用户名和密码   
    private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象 

    private String smtp; //SMTP服务器
    private String sender; //发信人
    private String receiver; //收信人
    private String cto; //抄送人
    private String subjects; //主题
private String contents; //正文
    private String uname;   
    private String pwd;         //密码,一般是邮箱的登录密码,如果是QQ邮箱则会有一个单独的密码,需要在设置中开启POP3和SMTP服务,并设置好密码.

set,get....
 
/**
     *   
    * @Title: setSmtpHost 
    * @Description: 设置邮件发送服务器 
    * @param hostName
    * @throws
     */
    public void setSmtpHost(String hostName) {   
        System.out.println("设置系统属性:mail.smtp.host = "+hostName);   
        if(props == null)  
            props = System.getProperties(); //获得系统属性对象    
        props.put("mail.smtp.host",hostName); //设置SMTP主机   
    }

 /**
     *   
    * @Title: createMimeMessage 
    * @Description: 创建MIME邮件对象 
    * @return   
    * @throws
     */
    public boolean createMimeMessage()   
    {   
        try {   
            System.out.println("准备获取邮件会话对象!");   
            session = Session.getDefaultInstance(props,null); //获得邮件会话对象   
        }   
        catch(Exception e){   
            System.err.println("获取邮件会话对象时发生错误!"+e);   
            return false;   
        }   
      
        System.out.println("准备创建MIME邮件对象!");   
        try {   
            mimeMsg = new MimeMessage(session); //创建MIME邮件对象   
            mp = new MimeMultipart();   
          
            return true;   
        } catch(Exception e){   
            System.err.println("创建MIME邮件对象失败!"+e);   
            return false;   
        }   
    }

 /**
     *   
    * @Title: setNeedAuth 
    * @Description: 设置SMTP是否需要验证
    * @param need  
    * @throws
     */
    public void setNeedAuth(boolean need) {   
        System.out.println("设置smtp身份认证:mail.smtp.auth = "+need);   
        if(props == null) props = System.getProperties();   
//        props.put("mail.smtp.port", "25");
        if(need){   
            props.put("mail.smtp.auth","true");   
        }else{   
            props.put("mail.smtp.auth","false");   
        }   
    }

 /**
     *   
    * @Title: setNamePass 
    * @Description: 设置用户名和密码
    * @param name
    * @param pass     
    * @throws
     */
    public void setNamePass(String name,String pass) {   
        uname = name;   
        pwd = pass;   
    }
    /**
     *   
    * @Title: setSubject 
    * @Description: 设置邮件主题
    * @param mailSubject
    * @return   
    * @throws
     */
    public boolean setSubject(String mailSubject) {   
        System.out.println("设置邮件主题!");   
        try{ 
         if(mailSubject==""){
         mailSubject=null;
         }
            mimeMsg.setSubject(mailSubject);   
            return true;   
        }   
        catch(Exception e) {   
            System.err.println("设置邮件主题发生错误!");   
            return false;   
        }   
    }
/**
     *  
    * @Title: setBody 
    * @Description: 设置邮件正文
    * @param mailBody
    * @return
    * @throws
     */
    public boolean setBody(String mailBody) {   
        try{
         if(mailBody==""){
         mailBody=null;
         }
            BodyPart bp = new MimeBodyPart();   
            bp.setContent(""+mailBody,"text/html;charset=GBK");   
            mp.addBodyPart(bp);   
            return true;   
        } catch(Exception e){   
        System.err.println("设置邮件正文时发生错误!"+e);   
        return false;   
        }   
    }
    /**
     *    
    * @Title: setFrom 
    * @Description: 设置发信人
    * @param from
    * @return  
    * @throws
     */
    public boolean setFrom(String from) {   
        System.out.println("设置发信人!");   
        try{
         if(from==""){
         from=null;
         }
            mimeMsg.setFrom(new InternetAddress(from)); //设置发信人   
            return true;   
        } catch(Exception e) {   
            return false;   
        }   
    }   
    /**
     *  
    * @Title: setTo 
    * @Description: 设置收信人
    * @param to
    * @return   
    * @throws
     */
    public boolean setTo(String to){   
        if(to == null)return false;   
        try{ 
         if(to==""){
         to=null;
         }
            mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));   
            return true;   
        } catch(Exception e) {   
            return false;   
        }     
    }
    /**
     *   
    * @Title: setCopyTo 
    * @Description: 设置抄送人
    * @param copyto
    * @return  
    * @throws
     */
    public boolean setCopyTo(String copyto)   
    {   
     if(copyto==""){
     copyto=null;
     }
        if(copyto == null)return false;   
        try{   
        mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));   
        return true;   
        }   
        catch(Exception e)   
        { return false; }   
    }

 /**
     *   
    * @Title: sendOut 
    * @Description: 发送邮件
    * @param cto
    * @return
    * @throws
     */
    public boolean sendOut(String cto)   
    {   
        try{   
            mimeMsg.setContent(mp); 
            // 设置 E-mail 正文部分  
//          mimeMsg.setText(body);  
            //mimeMsg.setContent(contents, "text/html;charset = gbk");  
            System.out.println("正在发送邮件....");   
            Session mailSession = Session.getInstance(props,null);  
            mailSession.setDebug(true); //debug模式,能打印出详细信息,主要是显示错误信息的状态码
            Transport transport = mailSession.getTransport("smtp");
            System.out.println(props.get("mail.smtp.host").toString());
            transport.connect(props.get("mail.smtp.host").toString(),uname,pwd); 
            transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
            if(cto != null && !"".equals(cto)){
             transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC)); 
            }
            //transport.send(mimeMsg);   
              
            System.out.println("发送邮件成功!");   
            transport.close();   
            return true;   
        } catch(Exception e) {   
            System.err.println("邮件发送失败!"+e);   
            e.printStackTrace();Logit.error("",e);
            return false;   
        }   
    }

  /**
     * 
    * @Title: sendMail 
    * @Description: 调用sendOut方法完成邮件发送,带附件和抄送 
    * @param model
    * @return
    * @throws
     */
    @Override
public ResultData execute() throws Exception {
     if(this.cto.equals("value")){
     this.cto="";
}
ResultData resultData=new ResultData();
int result=ResultData.RESULT_SUCCESS;
String msg="";
        String msgSuc="邮件发送成功";
        String msgSubjectErr="";
        String msgContentsErr="";
        String msgReceiverErr="";
        String msgCtoErr="";
        String msgSenderErr="";
        String msgSendErr="";
EMailBean theMail = new EMailBean(this.smtp);  
        theMail.setNeedAuth(true); //需要验证  
        theMail.setNamePass(this.uname,this.pwd);
if (!theMail.setSubject(this.subjects)){
msgSubjectErr="设置邮件主题发生错误!,";
        }
if(!theMail.setBody(this.contents)) {
msgContentsErr="设置邮件正文时发生错误!,";
        }
if(!theMail.setTo(this.receiver)){
msgReceiverErr="设置收信人时发生错误!,";
        }
if(!theMail.setCopyTo(this.cto)){
msgCtoErr="设置抄送人时发生错误!,";
        }
if(!theMail.setFrom(this.sender)){
msgSenderErr="设置发信人时发生错误!,";
        }
        if(!theMail.sendOut(this.cto)) {
         result=ResultData.RESULT_FAIL;
         msgSendErr="邮件发送失败!,";
        }
        if(msgSendErr.equals("")){
         msg=msgSuc;
        }else{
         msg=msgSubjectErr+msgContentsErr+msgReceiverErr+msgCtoErr+msgSenderErr+msgSendErr;
        }
        String jsonVars="{'result':'"+result+"'}";
        resultData.setResult(result);
        resultData.setMsg(msg);
        resultData.setJsonVars(jsonVars);
return resultData;
}






public class ResultData {
//成功
public static final int RESULT_SUCCESS = 0;
//失败
public static final int RESULT_FAIL = 100;
//接口异常
public static final int RESULT_FAIL_INTERFACE = 1;
//处理结果代码
private int result;
//处理组件信息
private String comInfo;
//处理消息
private String msg;
//返回的json变量
private String jsonVars;
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getComInfo() {
return comInfo;
}
public void setComInfo(String comInfo) {
this.comInfo = comInfo;
}
public String getJsonVars() {
return jsonVars;
}
public void setJsonVars(String jsonVars) {
this.jsonVars = jsonVars;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值