通过JAVA发送邮件--mail.jar

通过JAVA发送email.  需要下载mail.jar. 第4个java代码的些设置根据实际情况设置。

本例是针对goole邮件服务:google mail: smtp.gmail.com 465 需要启用ssl。 其他的可以网上参考。

1. MailSenderInfo

import java.util.Properties;

public class MailSenderInfo {
  private String mailServerHost;
  private String mailServerPort = "25";
   private String fromAddress;
   private String toAddress;
  private String userName;
  private String password;
  private boolean validate = false;
  private String subject;
  private String content;
  private String[] attachFileNames;
  private boolean ssl;
  final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
  
  public Properties getProperties() {
   Properties p = new Properties();
   p.put("mail.smtp.host", this.mailServerHost);
   p.put("mail.smtp.port", this.mailServerPort);
   p.put("mail.smtp.auth", validate ? "true" : "false");
   if(ssl) p.put("mail.smtp.socketFactory.class", SSL_FACTORY);
   return p;
  }

  public String getMailServerHost() {
   return mailServerHost;
  }

  public void setMailServerHost(String mailServerHost) {
   this.mailServerHost = mailServerHost;
  }

  public String getMailServerPort() {
   return mailServerPort;
  }

  public void setMailServerPort(String mailServerPort) {
   this.mailServerPort = mailServerPort;
  }

  public boolean isValidate() {
   return validate;
  }

  public void setValidate(boolean validate) {
   this.validate = validate;
  }

  public String[] getAttachFileNames() {
   return attachFileNames;
  }

  public void setAttachFileNames(String[] fileNames) {
   this.attachFileNames = fileNames;
  }

  public String getFromAddress() {
   return fromAddress;
  }

  public void setFromAddress(String fromAddress) {
   this.fromAddress = fromAddress;
  }

  public String getPassword() {
   return password;
  }

  public void setPassword(String password) {
   this.password = password;
  }

  public String getToAddress() {
   return toAddress;
  }

  public void setToAddress(String toAddress) {
   this.toAddress = toAddress;
  }

  public String getUserName() {
   return userName;
  }

  public void setUserName(String userName) {
   this.userName = userName;
  }

  public String getSubject() {
   return subject;
  }

  public void setSubject(String subject) {
   this.subject = subject;
  }

  public String getContent() {
   return content;
  }

  public void setContent(String textContent) {
   this.content = textContent;
  }

  public boolean isSsl() {
   return ssl;
  }

  public void setSsl(boolean ssl) {
   this.ssl = ssl;
  }
}

2. MyAuthenticator

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MyAuthenticator extends Authenticator {
 String userName = null;
 String password = null;

 public MyAuthenticator() {

 }

 public MyAuthenticator(String username, String password) {
  this.userName = username;
  this.password = password;
 }
 protected PasswordAuthentication getPasswordAuthentication() {
  return new PasswordAuthentication(userName, password);
 }
}

3.SimpleMailSender

import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class SimpleMailSender {
 /** */
 /**
  * 以文本格式发送邮件
  *
  * @param mailInfo
  *            待发送的邮件的信息
  */
 public static boolean sendTextMail(MailSenderInfo mailInfo) {
  // 判断是否需要身份认证
  MyAuthenticator authenticator = null;
  Properties pro = mailInfo.getProperties();
  if (mailInfo.isValidate()) {
   // 如果需要身份认证,则创建一个密码验证器
   authenticator = new MyAuthenticator(mailInfo.getUserName(),
     mailInfo.getPassword());
  }
  // 根据邮件会话属性和密码验证器构造一个发送邮件的session
  Session sendMailSession = Session
    .getDefaultInstance(pro, authenticator);
  try {
   // 根据session创建一个邮件消息
   Message mailMessage = new MimeMessage(sendMailSession);
   // 创建邮件发送者地址
   Address from = new InternetAddress(mailInfo.getFromAddress());
   // 设置邮件消息的发送者
   mailMessage.setFrom(from);
   // 创建邮件的接收者地址,并设置到邮件消息中
   Address to = new InternetAddress(mailInfo.getToAddress());
   mailMessage.setRecipient(Message.RecipientType.TO, to);
   // 设置邮件消息的主题
   mailMessage.setSubject(mailInfo.getSubject());
   // 设置邮件消息发送的时间
   mailMessage.setSentDate(new Date());
   // 设置邮件消息的主要内容
   String mailContent = mailInfo.getContent();
   mailMessage.setText(mailContent);
   // 发送邮件
   Transport.send(mailMessage);
   return true;
  } catch (MessagingException ex) {
   ex.printStackTrace();
  }
  return false;
 }
 /** */
 /**
  *
  * 以HTML格式发送邮件
  *
  * @param mailInfo
  *            待发送的邮件信息
  */

 public static boolean sendHtmlMail(MailSenderInfo mailInfo) {
  // 判断是否需要身份认证
  MyAuthenticator authenticator = null;
  Properties pro = mailInfo.getProperties();
  // 如果需要身份认证,则创建一个密码验证器
  if (mailInfo.isValidate()) {
   authenticator = new MyAuthenticator(mailInfo.getUserName(),
     mailInfo.getPassword());
  }
  // 根据邮件会话属性和密码验证器构造一个发送邮件的session
  Session sendMailSession = Session
    .getDefaultInstance(pro, authenticator);
  try {
   // 根据session创建一个邮件消息
   Message mailMessage = new MimeMessage(sendMailSession);
   // 创建邮件发送者地址
   Address from = new InternetAddress(mailInfo.getFromAddress());
   // 设置邮件消息的发送者
   mailMessage.setFrom(from);
   // 创建邮件的接收者地址,并设置到邮件消息中
   Address to = new InternetAddress(mailInfo.getToAddress());
   // Message.RecipientType.TO属性表示接收者的类型为TO
   mailMessage.setRecipient(Message.RecipientType.TO, to);
   // 设置邮件消息的主题
   mailMessage.setSubject(mailInfo.getSubject());
   // 设置邮件消息发送的时间
   mailMessage.setSentDate(new Date());
   // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
   Multipart mainPart = new MimeMultipart();
   // 创建一个包含HTML内容的MimeBodyPart
   BodyPart html = new MimeBodyPart();
   // 设置HTML内容
   html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
   mainPart.addBodyPart(html);
   // 将MiniMultipart对象设置为邮件内容
   mailMessage.setContent(mainPart);
   // 发送邮件
   Transport.send(mailMessage);
   return true;
  } catch (MessagingException ex) {
   ex.printStackTrace();
  }
  return false;
 }
}

4.

public class MailSenderTest {

 @SuppressWarnings("static-access")
 public static void main(String args[]) {

  MailSenderInfo mailInfo = new MailSenderInfo();
  mailInfo.setMailServerHost("smtp.gmail.com");
  mailInfo.setMailServerPort("465");
  mailInfo.setValidate(true);
  mailInfo.setSsl(true);
  mailInfo.setUserName(" username
  mailInfo.setPassword("*********");// password
  mailInfo.setFromAddress("
Sender address
  mailInfo.setToAddress("
 }
}

猜你喜欢

转载自blog.csdn.net/IamstudyingJava/article/details/40891869