java 生成邮件

来源:互联网 发布:德雷克船长拉杆箱 淘宝 编辑:程序博客网 时间:2024/06/06 01:08

1.java生成邮件首先需要下载java 的mail jar包,如果是maven管理

可按以下配置

 <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.4</version>
    </dependency>

2.创建发邮件需要的java类。

  首先创建MailSenderInfo,该类是描述邮件的bean信息

 import java.util.Properties;


public class MailSenderInfo {
// 发送邮件的服务器的IP和端口    
    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;
    
    /**   
     * 获得邮件会话属性   
     */    
   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");    
     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 String getFromAddress() {
return fromAddress;
}


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


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 getPassword() {
return password;
}


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


public boolean isValidate() {
return validate;
}


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


public String getSubject() {
return subject;
}


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


public String getContent() {
return content;
}


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


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


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

   
   
}

3.创建MyAuthenticator,该类继承Authenticator,实现服务器登陆验证

/**
 * 服务器邮箱登录验证
 * 
 * @author SELF
 * 
 */
public class MyAuthenticator extends Authenticator {
/**
     * 用户名(登录邮箱)
     */
    private String username;
    /**
     * 密码
     */
    private String password;
    
    /**
     * 初始化邮箱和密码
     * 
     * @param username 邮箱
     * @param password 密码
     */
    public MyAuthenticator(String username, String password) {
    this.username = username;
    this.password = password;
    }


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;
}


@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
    
    
}


4.最后创建发送邮件的实现类SimpleMailSender

   /**   
* 简单邮件(不带附件的邮件)发送器   
*/   
public class SimpleMailSender {
/**   
 * 以文本格式发送邮件   
 * @param mailInfo 待发送的邮件的信息   
 */ 
public 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;    
   }    
}


5.最后可写个main函数进行验证

public class EmailMain {


public static void main(String[] args) {
//这个类主要是设置邮件   
    MailSenderInfo mailInfo = new MailSenderInfo(); 
    mailInfo.setMailServerHost("smtp.126.com"); 
    mailInfo.setMailServerPort("25");    
    mailInfo.setValidate(true);
    mailInfo.setUserName("xxx");    
    mailInfo.setPassword("xxx");//您的邮箱密码    
    mailInfo.setFromAddress("xxx");    
    mailInfo.setToAddress("xxx");  
    mailInfo.setSubject("设置邮箱标题 stem host 测试");    
    mailInfo.setContent("设置邮箱内容 如http://www.guihua.org 中国桂花网 是中国最大桂花网站==");   
    //这个类主要来发送邮件   
    SimpleMailSender sms = new SimpleMailSender();   
         //sms.sendTextMail(mailInfo);//发送文体格式    
         sms.sendHtmlMail(mailInfo);//发送html格式   
}


}

0 0
原创粉丝点击