java邮件开发(转)

原文地址http://blog.youkuaiyun.com/cyh1111/article/details/4349200

1. 首先建立一个简单的邮件Model

 

package com.itmg.tool.email;

 

import java.io.Serializable;

 

public class MailModel implements Serializable {

private static final long serialVersionUID = 1L;

private String subjectText;

private String bodyText;

private String[] receiver;

    private String content_format = "text/html; charset=UTF-8";

    private boolean isdebug = false;

public MailModel() {

// TODO Auto-generated constructor stub

}

public String getBodyText() {

return bodyText;

}

public void setBodyText(String bodyText) {

this.bodyText = bodyText;

}

public String[] getReceiver() {

return receiver;

}

public void setReceiver(String[] receiver) {

this.receiver = receiver;

}

public String getSubjectText() {

return subjectText;

}

public void setSubjectText(String subjectText) {

this.subjectText = subjectText;

}

    public String getContent_format() {

        return content_format;

    }

    public void setContent_format(String content_format) {

        this.content_format = content_format;

    }

public boolean isIsdebug() {

return isdebug;

}

public void setIsdebug(boolean isdebug) {

this.isdebug = isdebug;

}

}

2. 认证
package com.itmg.tool.email;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class PopupAuthenticator extends Authenticator{
String username=null;
      String password=null;
      public PopupAuthenticator(){}
      public PasswordAuthentication performCheck(String user,String pass){
          username = user;
          password = pass;
          return getPasswordAuthenticatio n();
      }
      protected PasswordAuthentication getPasswordAuthenticatio n(){
          return new PasswordAuthentication(username, password);
      }
}
3. 建立发邮件的类
package com.itmg.tool.email;
import java.io.UnsupportedEncodingExcep tion;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.apache.log4j.Logger;
import com.itmg.db.TransServer;
public class SendMail extends Thread{
private static Logger log = Logger.getLogger(SendMail.class.getName()); 
private static final String SMTP_HOST_NAME = "smtp.gmail.com"; //发邮件的服务器
private static final String emailFromAddress = "xxx@gmail.com";
private static final String emailFromAddressPassword = "xxxxx";
private static final String emailTitle = "Exception";//email 的标题名字
private MailModel mailModel;
public SendMail(MailModel mailModel) {
// TODO Auto-generated constructor stub
this.mailModel = mailModel;
}
public void sendMessage() throws MessagingException{
String recipients[] = mailModel.getReceiver();
String subject = mailModel.getSubjectText();
String message = mailModel.getBodyText();
boolean isdebug = mailModel.isIsdebug();
Properties props = System.getProperties();
Session sendMailSession;
props.put("mail.smtp.auth", "true");
props.put("mail.debug", isdebug);
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.user", emailFromAddress);
props.put("mail.smtp.password", emailFromAddressPassword );
PopupAuthenticator popA = new PopupAuthenticator();
PasswordAuthentication pop = popA.performCheck(emailFromAddress, emailFromAddressPassword );
sendMailSession = Session.getInstance(props, popA);
MimeMessage mimeMessage = new MimeMessage(sendMailSession);
try {
mimeMessage.setFrom(new InternetAddress(emailFromAddress, emailTitle,
"UTF-8"));
} catch (UnsupportedEncodingExcep tion e) {
e.printStackTrace();
}
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
addressTo[i] = new InternetAddress(recipients[i]);
}
mimeMessage.setRecipients(Message.RecipientType.TO, addressTo);
mimeMessage.setSubject(subject, "UTF-8");
mimeMessage.setContent(message,
mailModel.getContent_format());
mimeMessage.setHeader("Content-Transfer-Encoding", "7bit");
mimeMessage.setSentDate(new Date());
Transport.send(mimeMessage);
log.info("========>the email has been sent out!");
}
public void run()
{
try {
sendMessage();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
4. 负责发邮件的Action
package com.itmg.search.action;
import com.itmg.search.action.base.SearchBaseAction;
import com.itmg.tool.email.MailModel;
import com.itmg.tool.email.SendMail;
import com.itmg.util.TransServerUtil;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.util.ValueStack;
public class SendMailAction extends SearchBaseAction{
     
private static final long serialVersionUID = 1L;
public String execute() throws Exception {
ValueStack valueStack = ActionContext.getContext().getValueStack();
String message = (String)valueStack.findValue("exceptionStack");
MailModel mailModel = new MailModel();
StringBuffer sb = new StringBuffer();
sb.append("RemoteHost"+request.getRemoteHost()+"/r/n");
sb.append("RemoteAddr"+request.getRemoteAddr()+"/r/n");
sb.append("User-Agent:"+request.getHeader("User-Agent")+"/r/n");
sb.append("RefererString:"+request.getHeader("referer")+"/r/n");
sb.append(message);
mailModel.setBodyText(sb.toString());
mailModel.setSubjectText("The API.com server error notice");
mailModel.setReceiver(new String[]{TransServerUtil.ToMeEmail});
mailModel.setContent_format("text/plain;charset=utf-8");
SendMail emailSend = new SendMail(mailModel);
Thread emailThread = new Thread(emailSend);
emailThread.start();
return "index";
}
     
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值