java邮件发送

原创
2015/09/10 11:57
阅读数 144
1、导入email的jar包
2、在项目中配置相关的参数。(发送的邮箱用户名和密码,服务器)
host = smtp.qq.com
from = test@qq.com
user = 
pass = 123456
3、封装邮件发送的方法,下面四段就OK了,然后再相应的位置和相应的要求直接调用send方法,传递相关参数。

/**
 * 邮件发送配置器
 * 
 * 
 */
public class Config implements Serializable {
 private static final long serialVersionUID = 1L;
 // 发送方邮件服务器
 private String smtp;
 // 发送时是否验证
 private boolean auth;
 // 验证用户名
 private String username;
 // 验证密码
 private String password;
 // 是否使用代理
 private boolean proxy;
 // 代理地址
 private String proxyHost;
 // 代理端口
 private int proxyPort = 80;
 public String getSmtp() {
  return smtp;
 }
 public void setSmtp(String smtp) {
  this.smtp = smtp;
 }
 public boolean isAuth() {
  return auth;
 }
 public void setAuth(boolean auth) {
  this.auth = auth;
 }
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public boolean isProxy() {
  return proxy;
 }
 public void setProxy(boolean proxy) {
  this.proxy = proxy;
 }
 public String getProxyHost() {
  return proxyHost;
 }
 public void setProxyHost(String proxyHost) {
  this.proxyHost = proxyHost;
 }
 public int getProxyPort() {
  return proxyPort;
 }
 public void setProxyPort(int proxyPort) {
  this.proxyPort = proxyPort;
 }
 protected void check() {
 }
}
/**
 * Email 类:添加相关Email信息 
 */
public class Email implements Serializable {
 private static final long serialVersionUID = 1L;
 /**
  * 邮件内容类型
  * 
  * @author lvyue
  * 
  */
 public enum ContentType {
  TEXT, HTML
 }
 // 发件人
 private String sender;
 // 收件人
 private String[] addressees;
 // 抄送人
 private String[] cc;
 // 安送人
 private String[] bcc;
 // 邮件主题
 private String subject;
 // 邮件内容
 private String content;
 // 文本内容类型
 private ContentType contentType = ContentType.TEXT;
 // 附件
 private boolean affix;
 // 附件地址
 private String[] affixName;
 /**
  * 获取发信人地址
  * 
  * @return
  */
 public String getSender() {
  return sender;
 }
 /**
  * 设置发信人地址
  * 
  * @param sender
  */
 public void setSender(String sender) {
  this.sender = sender;
 }
 /**
  * 获取收信人地址
  * 
  * @return
  */
 public String[] getAddressees() {
  return addressees;
 }
 /**
  * 设置收信人地址
  * 
  * @param addressees
  */
 public void setAddressees(String[] addressees) {
  this.addressees = addressees;
 }
 /**
  * 获取邮件主题
  * 
  * @return
  */
 public String getSubject() {
  return subject;
 }
 /**
  * 设置邮件主题
  * 
  * @param subject
  */
 public void setSubject(String subject) {
  this.subject = subject;
 }
 /**
  * 获取邮件内容
  * 
  * @return
  */
 public String getContent() {
  return content;
 }
 /**
  * 设置邮件内容
  * 
  * @param content
  */
 public void setContent(String content) {
  this.content = content;
 }
 /**
  * 获取邮件类型
  * 
  * @return
  */
 public ContentType getContentType() {
  return contentType;
 }
 /**
  * 设置邮件类型
  * 
  * @param contentType
  */
 public void setContentType(ContentType contentType) {
  this.contentType = contentType;
 }
 /**
  * 是否带有附件
  * 
  * @return
  */
 public boolean hasAffix() {
  return affix;
 }
 /**
  * 获取附件地址
  * 
  * @return
  */
 public String[] getAffixName() {
  return affixName;
 }
 /**
  * 设置附件地址
  * 
  * @param affixName
  */
 public void setAffixName(String[] affixName) {
  this.affixName = affixName;
  affix = (this.affixName != null && this.affixName.length > 0);
 }
 public String[] getCc() {
  return cc;
 }
 /**
  * 抄送人
  * 
  * @param cc
  */
 public void setCc(String[] cc) {
  this.cc = cc;
 }
 public String[] getBcc() {
  return bcc;
 }
 /**
  * 添加暗送
  * 
  * @param bcc
  */
 public void setBcc(String[] bcc) {
  this.bcc = bcc;
 }
}
/**
 * @FileName MailManager.java
 * @Description: 
 *
 * @Date 2015年8月25日 
 * @author 
 * @version 1.0
 * 
 */
public class MailManager {
 protected Log logger = LogFactory.getLog(this.getClass());
 private Session session;
 public MailManager(Config config) {
  try {
   reload(config);
  } catch (Throwable t) {
   logger.error("", t);
  }
 }
 public boolean send(Email email) {
  try {
   // 定义发送信息的对象
   Message msg = new MimeMessage(session);
   // 设置发信人地址
   if (StringUtils.isNotEmpty(email.getSender())) {
    msg.setFrom(new InternetAddress(email.getSender()));
   } else {
    msg.setFrom();
   }
   // 设置标题
   msg.setSubject(email.getSubject());
   // 获取收信人列表
   String[] addressees = email.getAddressees();
   // 非空验证
   // 设置收信人
   InternetAddress[] toInternetAddressees = new InternetAddress[addressees.length];
   for (int i = 0; i < addressees.length; i++) {
    toInternetAddressees[i] = new InternetAddress(addressees[i]);
   }
   msg.setRecipients(RecipientType.TO, toInternetAddressees);
   // 设置抄送人
   String[] cc = email.getCc();
   if (cc != null && cc.length > 0) {
    // 设置收信人
    InternetAddress[] ccInternetAddressees = new InternetAddress[cc.length];
    for (int i = 0; i < cc.length; i++) {
     ccInternetAddressees[i] = new InternetAddress(cc[i]);
    }
    msg.setRecipients(RecipientType.CC, ccInternetAddressees);
   }
   // 设置暗送
   String[] bcc = email.getBcc();
   if (bcc != null && bcc.length > 0) {
    // 设置收信人
    InternetAddress[] bccInternetAddressees = new InternetAddress[bcc.length];
    for (int i = 0; i < bcc.length; i++) {
     bccInternetAddressees[i] = new InternetAddress(bcc[i]);
    }
    msg.setRecipients(RecipientType.BCC, bccInternetAddressees);
   }
   if (email.getContentType().equals(ContentType.TEXT)) {
    msg.setText(email.getContent());
    // 添加附件
    if (email.hasAffix()) {
     Multipart mp = new MimeMultipart();
     String[] affixName = email.getAffixName();
     for (int i = 0; i < affixName.length; i++) {
      MimeBodyPart affix = new MimeBodyPart();
      affix.attachFile(affixName[i]);
      mp.addBodyPart(affix, i);
     }
     msg.setContent(mp);
    }
   } else if (email.getContentType().equals(ContentType.HTML)) {
    // 添加邮件内容
    BodyPart body = new MimeBodyPart();
    body.setContent(email.getContent(), "text/html;charset=utf-8");
    Multipart mp = new MimeMultipart();
    mp.addBodyPart(body, 0);
    // 添加附件
    if (email.hasAffix()) {
     String[] affixName = email.getAffixName();
     for (int i = 0; i < affixName.length; i++) {
      MimeBodyPart affix = new MimeBodyPart();
      affix.attachFile(affixName[i]);
      mp.addBodyPart(affix, i + 1);
     }
    }
    msg.setContent(mp);
   }
   // 设置发送时间
   msg.setSentDate(new Date(System.currentTimeMillis()));
   // 发送邮件
   Transport.send(msg);
   return true;
  } catch (Throwable t) {
   logger.error("", t);
   return false;
  }
 }
 /**
  * 重新载入配置
  * 
  * @param config
  * @throws Throwable
  */
 public void reload(Config config) throws Throwable {
  try {
   // 不为空
   // 配置验证
   config.check();
   // 定义属性对象
   Properties props = new Properties();
   // 设置属性
   // 设置smtp服务器
   props.put("mail.smtp.host", config.getSmtp());
   // 设置客户端是否向邮件服务器提交验证
   props.put("mail.smtp.auth", config.isAuth());
   // 定义验证对象
   Authenticator authenticator = null;
   if (config.isAuth()) {
    // 设置验证信息
    authenticator = new LocalAuthenticator(config.getUsername(), config.getPassword());
   }
   // 设置代理
   if (config.isProxy()) {
    System.setProperty("http.proxyHost", config.getProxyHost());
    System.setProperty("http.proxyPort", String.valueOf(config.getProxyPort()));
   }
   // 初始化Session
   session = Session.getDefaultInstance(props, authenticator);
  } catch (Throwable t) {
   logger.error("", t);
  }
 }
 /**
  * 验证地址类
  * 
  * @author lvyuely
  * 
  */
 class LocalAuthenticator extends Authenticator {
  private String username;
  private String password;
  public LocalAuthenticator(String username, String password) {
   this.username = username;
   this.password = password;
  }
  @Override
  protected PasswordAuthentication getPasswordAuthentication() {
   // TODO Auto-generated method stub
   return new PasswordAuthentication(username, password);
  }
 }
}
/**
 * @FileName Test.java
 * @Description: 
 *
 * @Date 2015年8月25日 
 * @author 
 * @version 1.0
 * 
 */
public class MailSend {
 public static void send(String to,String title,String content,ContentType t){
  Config config = new Config();
  config.setAuth(true);
  config.setUsername(MailContent.USER);
  config.setPassword(MailContent.PASS);
  config.setSmtp(MailContent.HOST);
  config.setProxy(false);
  
  MailManager manager = new MailManager(config);
  Email mail = new Email();
  mail.setSender(MailContent.FROM);
  mail.setAddressees(new String[] { to });
  //mail.setBcc(new String[] { "keeley.jun@qq.com" });
  mail.setSubject(title);
  mail.setContent(content);
  mail.setContentType(t);
  manager.send(mail);
 }
//发送文本
 public static void send(String to,String title,String content){
  send(to,title,content,ContentType.TEXT);
 }
//发送网页内容
 public static void sendHtml(String to,String title,String content){
  send(to,title,content,ContentType.HTML);
 }
//携链接地址
 private static void send() {
  String html=HttpKit.get("发送的链接地址....................");
  sendHtml("收件人","测试",html);
 }
}
展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部