当前位置: 代码迷 >> 综合 >> java发送邮件jar包的配置及源码(重新整理)
  详细解决方案

java发送邮件jar包的配置及源码(重新整理)

热度:76   发布时间:2024-01-13 01:04:58.0

一、jar包配置

1.删除Java EE 5 Libraries/javaee.jar下的mail包

2.导入j2eejar包

详情:http://blog.csdn.net/sdd379733766/article/details/8058118

j2ee.jar包下载地址:

http://download.csdn.net/detail/sdd379733766/4633961

 

二、源码

1.MailSenderInfo类

package com.bookstore.tool;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 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;    }    
}   


 

2.SimpleMailSender类

package com.bookstore.tool;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 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;    }    
}   


3.MyAuthenticator类

package com.bookstore.tool;import javax.mail.*;  
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);   }   
}   


 

4.测试

 

public static void main(String[] args){MailSenderInfo mailInfo = new MailSenderInfo();    mailInfo.setMailServerHost("smtp.qq.com");  //指定的smtp服务器。我用的是qq,你当然可以使用163或者新浪等其他邮箱mailInfo.setMailServerPort("25");    //端口mailInfo.setValidate(true);    mailInfo.setUserName("xxxxxx@qq.com");    // 邮件发送人的邮件地址mailInfo.setPassword("xxxxx");//邮件发送人的邮箱密码    mailInfo.setFromAddress("xxxxxxx@qq.com");    //发件人的邮件地址mailInfo.setToAddress("yyyyyyyyy@qq.com");    //收件人的邮件地址mailInfo.setSubject("设置邮箱标题 ");   //邮箱标题mailInfo.setContent("<font style='BACKGROUND-COLOR: #ccffcc' color='#ff0000' size='5'>邮件html格式测试<a href='http://www.baidu.com'>连接测试</a>测试图<em>片</em></font></br><img src='http://www.google.cn/intl/zh-CN/images/logo_cn.gif'></img>");      //这个类主要来发送邮件   SimpleMailSender sms = new SimpleMailSender();   //sms.sendTextMail(mailInfo);//发送文体格式    sms.sendHtmlMail(mailInfo);//发送html格式      
}

*****************************************************************************************************************************************

PS:要实现发邮件的功能,呢么你发件人的这个邮箱必须是已经开启了smtp服务(一般在各个邮箱的设置里有这个选项)

  相关解决方案