`
2277259257
  • 浏览: 515166 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

发送电子邮件 1----javax.mail

 
阅读更多

javaMail发送电子邮件的方法,自己总结了个步骤:

1、首先需要获取发送邮件的Session对象

Session session = Session.getDefaultInstance(properties,authorcator);

2、根据session对象,获取待发送的邮件消息

MimeMessage mimeMessage = new MimeMessage(session);

3、设置发件人,收件人,标题,邮件内容,附件,发送时间等;

4、利用Transport发送邮件

 

以下是居然的实现代码:

1、邮件信息类:

package com.china.test.mail;

import java.util.Properties;

/**
 * 发送邮件需要使用的基本信息 
 * @author dove *
 */
public class MailSenderInfo {
	// 发送邮件的服务器的IP
    private String mailServerHost;    
    // 发送邮件的服务器的端口    
    private String mailServerPort = "25";    
    // 邮件发送者的地址    
    private String fromAddress;    
    // 邮件接收者的地址    
    private String[] toAddress;
    // 邮件密送接收者的地址
    private String[] toBlindCarbonCopyAddress;
    // 邮件抄送接收者的地址
    private String[] toCarbonCopyAddress;
    // 登陆邮件发送服务器的用户名
    private String userName;
    // 登陆邮件发送服务器的密码    
    private String password;    
    // 是否需要身份验证    
    private boolean validate = false;    
    // 邮件主题    
    private String subject;    
    // 邮件的文本内容    
    private String content;    
    // 邮件附件的文件名    
    private String[] attachFileNames;
    
	/**
	 * 获得邮件会话属性
	 */
	public Properties getProperties() {
		Properties pro = new Properties();
		pro.put("mail.smtp.host", this.mailServerHost);
		pro.put("mail.smtp.port", this.mailServerPort);
		pro.put("mail.smtp.auth", validate ? "true" : "false");
		return pro;
	}
    
	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;
	}

	public String[] getToBlindCarbonCopyAddress() {
		return toBlindCarbonCopyAddress;
	}

	public void setToBlindCarbonCopyAddress(String[] toBlindCarbonCopyAddress) {
		this.toBlindCarbonCopyAddress = toBlindCarbonCopyAddress;
	}

	public String[] getToCarbonCopyAddress() {
		return toCarbonCopyAddress;
	}

	public void setToCarbonCopyAddress(String[] toCarbonCopyAddress) {
		this.toCarbonCopyAddress = toCarbonCopyAddress;
	}
	
}

 

2、身份验证类

package com.china.test.mail;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
 * 身份验证器
 * @author dove
 *
 */
public class MyAuthenticator extends Authenticator {
	private String username;
	private String password;
	public MyAuthenticator(){
		
	}
	
	public MyAuthenticator(String username, String password) {
		this.username = username;
		this.password = password;
	}

	@Override
	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(username, 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;
	}
}

 

3、发送邮件类

该类有两个功能,一个是发送普通文本邮件;一个是发送html邮件,两者的本质是相同的,mime类型有所区别而已,具体请看代码:

  1. package com.china.test.mail;   
  2.   
  3. import java.io.UnsupportedEncodingException;   
  4. import java.util.Date;   
  5. import java.util.Properties;   
  6.   
  7. import javax.activation.DataHandler;   
  8. import javax.activation.DataSource;   
  9. import javax.activation.FileDataSource;   
  10. import javax.mail.Address;   
  11. import javax.mail.BodyPart;   
  12. import javax.mail.Message;   
  13. import javax.mail.MessagingException;   
  14. import javax.mail.Multipart;   
  15. import javax.mail.Session;   
  16. import javax.mail.Transport;   
  17. import javax.mail.internet.AddressException;   
  18. import javax.mail.internet.InternetAddress;   
  19. import javax.mail.internet.MimeBodyPart;   
  20. import javax.mail.internet.MimeMessage;   
  21. import javax.mail.internet.MimeMultipart;   
  22. import javax.mail.internet.MimeUtility;   
  23.   
  24. /**  
  25.  * 简单邮件发送器  
  26.  * @author dove *  
  27.  */  
  28. public class SimpleMailSender {   
  29.     /**  
  30.      * 以文本格式发送邮件 (支持群发,带附件)  
  31.      * @param senderInfo 待发送的邮件的信息   
  32.      * @return  
  33.      */  
  34.     public static boolean sendMail(MailSenderInfo senderInfo){   
  35.         boolean flag = false;   
  36.            
  37.         // 判断是否需要身份验证   
  38.         MyAuthenticator authenticator = null;   
  39.         Properties props = senderInfo.getProperties();   
  40.         if(senderInfo.isValidate()){   
  41.             // 如果需要身份认证,则创建一个密码验证器      
  42.             authenticator = new MyAuthenticator(senderInfo.getUserName(), senderInfo.getPassword());   
  43.         }   
  44.         // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
  45.         Session sendMailSession = Session.getDefaultInstance(props, authenticator);   
  46.            
  47.         try {   
  48.             // 根据session创建一个邮件消息   
  49.             Message sendMailMessage = new MimeMessage(sendMailSession);   
  50.             // 创建邮件发送者地址   
  51.             Address from = new InternetAddress(senderInfo.getFromAddress());   
  52.             // 设置邮件消息的发送者   
  53.             sendMailMessage.setFrom(from);   
  54.                
  55.             // 创建邮件接收者地址   
  56.             String[] tos = senderInfo.getToAddress();   
  57.             if(tos != null && tos.length != 0){   
  58.                 InternetAddress[] to = new InternetAddress[tos.length];   
  59.                 // 设置邮件消息的发送者   
  60.                 for (int i = 0; i < tos.length; i++) {   
  61.                     to[i] = new InternetAddress(tos[i]);   
  62.                 }   
  63.                 sendMailMessage.setRecipients(Message.RecipientType.TO, to);   
  64.             }   
  65.                
  66.             // 设置邮件抄送者地址   
  67.             String[] toCCs = senderInfo.getToCarbonCopyAddress();   
  68.             if(toCCs != null && toCCs.length != 0){   
  69.                 InternetAddress[] toCC = new InternetAddress[toCCs.length];   
  70.                 // 设置邮件消息的发送者   
  71.                 for (int i = 0; i < toCCs.length; i++) {   
  72.                     toCC[i] = new InternetAddress(toCCs[i]);   
  73.                 }   
  74.                 sendMailMessage.addRecipients(Message.RecipientType.CC, toCC);   
  75.             }   
  76.                
  77.             // 设置邮件密送者地址   
  78.             String[] toBCCs = senderInfo.getToBlindCarbonCopyAddress();   
  79.             if(toBCCs != null && toBCCs.length != 0){   
  80.                 InternetAddress[] toBCC = new InternetAddress[toBCCs.length];   
  81.                 for (int i = 0; i < toBCCs.length; i++) {   
  82.                     toBCC[i] = new InternetAddress(toBCCs[i]);   
  83.                 }   
  84.                 sendMailMessage.addRecipients(Message.RecipientType.BCC, toBCC);   
  85.             }   
  86.                
  87.             // 设置邮件主题   
  88.             sendMailMessage.setSubject(MimeUtility.encodeText(senderInfo.getSubject(),"utf-8","B"));   
  89.             // 设置邮件内容   
  90.             //sendMailMessage.setText(senderInfo.getContent());   
  91.             Multipart multipart = new MimeMultipart();   
  92.             // 邮件文本内容   
  93.             if(senderInfo.getContent() != null && !"".equals(senderInfo.getContent())){   
  94.                 BodyPart part = new MimeBodyPart();   
  95.                 part.setContent(senderInfo.getContent(), "text/plain;charset=utf-8");//设置邮件文本内容   
  96.                 multipart.addBodyPart(part);   
  97.             }   
  98.                
  99.             // 附件   
  100.             String attachFileNames[] = senderInfo.getAttachFileNames();   
  101.             int leng = attachFileNames == null ? 0 : attachFileNames.length;   
  102.             for (int i = 0; i < leng; i++) {   
  103.                 BodyPart part = new MimeBodyPart();   
  104.                 // 根据文件名获取数据源   
  105.                 DataSource dataSource = new FileDataSource(attachFileNames[i]);   
  106.                 DataHandler dataHandler = new DataHandler(dataSource);   
  107.                 // 得到附件本身并至入BodyPart   
  108.                 part.setDataHandler(dataHandler);   
  109.                 // 得到文件名同样至入BodyPart   
  110.                 part.setFileName(MimeUtility.encodeText(dataSource.getName()));   
  111.                 multipart.addBodyPart(part);   
  112.             }   
  113.                
  114.             sendMailMessage.setContent(multipart);   
  115.             // 设置邮件发送的时间   
  116.             sendMailMessage.setSentDate(new Date());   
  117.             // 发送邮件   
  118.             //Transport.send(sendMailMessage);   
  119.             Transport transport = sendMailSession.getTransport("smtp");   
  120.             transport.connect(senderInfo.getUserName(), senderInfo.getPassword());   
  121.             transport.send(sendMailMessage,sendMailMessage.getAllRecipients());   
  122.             transport.close();   
  123.                
  124.             flag = true;   
  125.         } catch (AddressException e) {   
  126.             e.printStackTrace();   
  127.         } catch (MessagingException e) {   
  128.             e.printStackTrace();   
  129.         } catch (UnsupportedEncodingException e) {   
  130.             e.printStackTrace();   
  131.         }   
  132.            
  133.         return flag;   
  134.     }   
  135.        
  136.     public static boolean sendHtmlMail(MailSenderInfo senderInfo){   
  137.         boolean flag = false;   
  138.            
  139.         // 判断是否需要身份验证   
  140.         MyAuthenticator authenticator = null;   
  141.         Properties props = senderInfo.getProperties();   
  142.         if(senderInfo.isValidate()){   
  143.             // 如果需要身份认证,则创建一个密码验证器      
  144.             authenticator = new MyAuthenticator(senderInfo.getUserName(), senderInfo.getPassword());   
  145.         }   
  146.         // 根据邮件会话属性和密码验证器构造一个发送邮件的session   
  147.         Session sendMailSession = Session.getDefaultInstance(props, authenticator);   
  148.            
  149.         try {   
  150.             // 根据session创建一个邮件消息   
  151.             Message sendMailMessage = new MimeMessage(sendMailSession);   
  152.             // 创建邮件发送者地址   
  153.             Address from = new InternetAddress(senderInfo.getFromAddress());   
  154.             // 设置邮件消息的发送者   
  155.             sendMailMessage.setFrom(from);   
  156.                
  157.             // 创建邮件接收者地址   
  158.             String[] tos = senderInfo.getToAddress();   
  159.             if(tos != null && tos.length != 0){   
  160.                 InternetAddress[] to = new InternetAddress[tos.length];   
  161.                 // 设置邮件消息的发送者   
  162.                 for (int i = 0; i < tos.length; i++) {   
  163.                     to[i] = new InternetAddress(tos[i]);   
  164.                 }   
  165.                 sendMailMessage.setRecipients(Message.RecipientType.TO, to);   
  166.             }   
  167.                
  168.             // 设置邮件抄送者地址   
  169.             String[] toCCs = senderInfo.getToCarbonCopyAddress();   
  170.             if(toCCs != null && toCCs.length != 0){   
  171.                 InternetAddress[] toCC = new InternetAddress[toCCs.length];   
  172.                 // 设置邮件消息的发送者   
  173.                 for (int i = 0; i < toCCs.length; i++) {   
  174.                     toCC[i] = new InternetAddress(toCCs[i]);   
  175.                 }   
  176.                 sendMailMessage.addRecipients(Message.RecipientType.CC, toCC);   
  177.             }   
  178.                
  179.             // 设置邮件密送者地址   
  180.             String[] toBCCs = senderInfo.getToBlindCarbonCopyAddress();   
  181.             if(toBCCs != null && toBCCs.length != 0){   
  182.                 InternetAddress[] toBCC = new InternetAddress[toBCCs.length];   
  183.                 for (int i = 0; i < toBCCs.length; i++) {   
  184.                     toBCC[i] = new InternetAddress(toBCCs[i]);   
  185.                 }   
  186.                 sendMailMessage.addRecipients(Message.RecipientType.BCC, toBCC);   
  187.             }   
  188.                
  189.             // 设置邮件主题   
  190.             sendMailMessage.setSubject(MimeUtility.encodeText(senderInfo.getSubject(),"utf-8","B"));   
  191.             // 设置邮件内容   
  192.             //sendMailMessage.setText(senderInfo.getContent());   
  193.             Multipart multipart = new MimeMultipart();   
  194.             // 邮件文本内容   
  195.             if(senderInfo.getContent() != null && !"".equals(senderInfo.getContent())){   
  196.                 BodyPart part = new MimeBodyPart();   
  197.                 part.setContent(senderInfo.getContent(), "text/html;charset=utf-8");//设置邮件文本内容   
  198.                 multipart.addBodyPart(part);   
  199.             }   
  200.                
  201.             // 附件   
  202.             String attachFileNames[] = senderInfo.getAttachFileNames();   
  203.             int leng = attachFileNames == null ? 0 : attachFileNames.length;   
  204.             for (int i = 0; i < leng; i++) {   
  205.                 BodyPart part = new MimeBodyPart();   
  206.                 // 根据文件名获取数据源   
  207.                 DataSource dataSource = new FileDataSource(attachFileNames[i]);   
  208.                 DataHandler dataHandler = new DataHandler(dataSource);   
  209.                 // 得到附件本身并至入BodyPart   
  210.                 part.setDataHandler(dataHandler);   
  211.                 // 得到文件名同样至入BodyPart   
  212.                 part.setFileName(MimeUtility.encodeText(dataSource.getName()));   
  213.                 multipart.addBodyPart(part);   
  214.             }   
  215.                
  216.             sendMailMessage.setContent(multipart);   
  217.             // 设置邮件发送的时间   
  218.             sendMailMessage.setSentDate(new Date());   
  219.             // 发送邮件   
  220.             //Transport.send(sendMailMessage);   
  221.             Transport transport = sendMailSession.getTransport("smtp");   
  222.             transport.connect(senderInfo.getUserName(), senderInfo.getPassword());   
  223.             transport.send(sendMailMessage,sendMailMessage.getAllRecipients());   
  224.                
  225.             // 关闭transport   
  226.             transport.close();   
  227.                
  228.             flag = true;   
  229.         } catch (AddressException e) {   
  230.             e.printStackTrace();   
  231.         } catch (MessagingException e) {   
  232.             e.printStackTrace();   
  233.         } catch (UnsupportedEncodingException e) {   
  234.             e.printStackTrace();   
  235.         }   
  236.            
  237.         return flag;   
  238.     }   
  239.        
  240.     public static void main(String[] args) {   
  241.         MailSenderInfo mailInfo = new MailSenderInfo();   
  242.         mailInfo.setMailServerHost("smtp.sina.com");   
  243.         mailInfo.setMailServerPort("25");   
  244.         mailInfo.setValidate(true);   
  245.         mailInfo.setUserName("********@sina.com");   
  246.         mailInfo.setPassword("*********");// 您的邮箱密码   
  247.         mailInfo.setFromAddress("jingjingwang163@sina.com");   
  248.         String[] to = {"********@bj.china.com"};   
  249.         mailInfo.setToAddress(to);   
  250.         String[] toCC = {"**********@qq.com"};   
  251.         mailInfo.setToCarbonCopyAddress(toCC);   
  252.         String[] toBCC = {"*******@sina.com"};   
  253.         mailInfo.setToBlindCarbonCopyAddress(toBCC);   
  254.         mailInfo.setAttachFileNames(new String[]{"C:/Documents and Settings/Administrator/桌面/考勤休假制度表格(新).xls","C:/Documents and Settings/Administrator/桌面/dove.jpg"});   
  255.         mailInfo.setSubject("发送HTML邮件");   
  256.         String body = "<table width=\"80%\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"align:center;text-align:center\"><tr><td>你好</td><td>你好</td><td>你好</td></tr></table>";   
  257.         mailInfo.setContent(body);   
  258.         // 这个类主要来发送邮件   
  259.         System.out.println(SimpleMailSender.sendHtmlMail(mailInfo));;//发送文体格式   
  260.     }   
分享到:
评论

相关推荐

    javax.mail-1.6.0.jar包及移入maven仓库语句

    在Java开发中,`javax.mail`库是一个非常重要的组件,主要用于处理电子邮件的发送与接收。这个库提供了丰富的API,使得开发者能够轻松地实现邮件服务的功能。`javax.mail-1.6.0.jar`是该库的一个特定版本,包含了...

    javax.mail-1.6.2_javamailjar1.6.2_javamail-1.6.2_javax.mail_java

    `javax.mail-1.6.2_javamailjar1.6.2_javamail-1.6.2_javax.mail_java` 这个标题暗示了我们正在讨论的是 JavaMail 的 1.6.2 版本,这是一个稳定且广泛使用的版本。 JavaMail API 提供了一套标准的接口,用于与邮件...

    基于Maven的javax.mail发送邮件例子程序

    基于Maven的javax.mail发送邮件例子程序 pom.xml添加依赖jar: ...Message对象将存储发送的电子邮件信息,如主题,内容等等 javax.mail.Transport类 Transport传输邮件类,采用send方法是发送邮件。 * */

    javamail1.4.5和javax.mail-1.5.5.jar

    在给定的压缩包文件中,我们有两个关键组件:`javax.mail-1.5.5.jar` 和 `javamail1_4_5.zip`。 `javax.mail-1.5.5.jar` 是JavaMail API的一个版本,版本号为1.5.5。这个API定义了一组接口和类,用于与各种邮件系统...

    javax.mail.jar下载

    在Java编程环境中,`javax.mail.jar` 是一个非常重要的库,它提供了用于发送和接收电子邮件的API。这个库是JavaMail API的一部分,主要用于处理SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP(因特网消息...

    javax.mail-1.5.2源码

    `javax.mail` 是Java平台上的一个标准API,用于处理电子邮件通信。这个API提供了一套全面的接口和类,使得开发者可以方便地实现邮件发送、接收、管理邮箱等操作。`javax.mail-1.5.2` 版本是这个库的一个特定发行版,...

    java发送邮件依赖包javax.mail.jar和activation.jar.zip

    javax.mail.jar 和 activation.jar 是实现这一功能的关键库文件,它们提供了JavaMail API,允许开发者通过Java代码来发送和接收电子邮件。 javax.mail.jar 包含了JavaMail API的核心类和接口,这些接口和类主要...

    javax.mail.1.4.7.jar

    JavaMail是Java编程环境中用于处理电子邮件的一套强大的API,它为开发者提供了丰富的功能,使得在应用程序中发送、接收和管理邮件变得极其便捷。标题中的"javax.mail.1.4.7.jar"指的是JavaMail的一个特定版本,即...

    javax.mail发送邮件

    根据提供的文件信息,我们可以深入探讨如何使用`javax.mail`包中的类来实现通过QQ邮箱服务发送电子邮件的功能。这里的关键步骤包括设置SMTP服务器、配置安全连接(如SSL/TLS)、创建邮件会话、构建邮件对象以及最终...

    javax.mail-1.6.0.rar

    在Java开发中, javax.mail-1.6.0 是一个重要的库,用于处理电子邮件的发送与接收。这个库为开发者提供了丰富的API,使得我们可以方便地实现邮件的创建、发送、接收以及管理等操作。以下是对javax.mail-1.6.0库的...

    javax.mail-api.jar,activation.jar包下载

    在Java编程环境中,发送电子邮件是一项常见的任务,而这通常涉及到对 javax.mail-api.jar 和 activation.jar 这两个库的使用。这两个JAR文件是JavaMail API的核心组成部分,为开发者提供了丰富的功能来处理邮件的...

    javax.mail-1.3.3.01.jar.zip

    "javax.mail-1.3.3.01.jar.zip" 文件是JavaMail库的一个版本1.3.3.01的压缩包,包含了"javax.mail-1.3.3.01.jar" 这个核心的JAR文件。 在JavaMail中,主要包含以下关键知识点: 1. **JavaMail API**: 这是一套标准...

    javamail相关JAR包

    JavaMail是Java编程环境中用于处理电子邮件的一套API,它提供了丰富的功能,允许开发者发送、接收和操作邮件。在JavaMail的实现中,通常会用到三个关键的JAR包:`activation-1.1.jar`、`javax.mail-api-1.5.6.jar`和...

    javax.mail-1.6.0.jar.7z

    标题中的 "javax.mail-1.6.0.jar.7z" 指的是JavaMail 1.6.0版本的jar包,已经压缩成7z格式,用于方便开发者下载和使用。描述中提到的“下载后解压到当前文件夹即可”,意味着开发者可以将这个压缩包解压,并将其包含...

    javax.mail-1.6

    总的来说,`javax.mail-1.6`是Java开发者处理电子邮件的标准库,它提供了丰富的API和强大的功能,使得编写邮件应用变得简单易行。无论你是要发送简单的文本邮件,还是构建复杂的邮件系统,JavaMail都能满足需求。

    ant发邮件所需的jar(activation.jar+javax.mail.jar+mail.jar+commons-email-1.2.jar)

    4. **commons-email-1.2.jar**:这是Apache Commons Email库,提供了一组高级API,简化了使用JavaMail发送电子邮件的过程。这个库包含了丰富的功能,如添加附件、设置HTML内容、发送多部分邮件等,使邮件发送更加...

    Java发送邮件实例及mail.jar包和activation-1.1.jar包.rar

    在Java编程中,发送电子邮件是一项常见的任务,尤其在自动化通知、数据报告或者用户验证等场景中。本实例将深入探讨如何使用`mail.jar`和`activation-1.1.jar`这两个库来实现邮件发送功能。这两个JAR文件是JavaMail ...

    javax.mail-1.5.1.zip

    这个压缩包"javax.mail-1.5.1.zip"包含的是JavaMail 1.5.1版本的JAR文件,即"javax.mail-1.5.1.jar"。这个JAR文件包含了发送和接收电子邮件所需的所有类和接口,使得开发者能够方便地在Java环境中实现邮件功能。 ...

    javax.mail.jar

    在Java编程领域,`javax.mail.jar`是一个重要的库文件,它包含了Java Mail API的所有类和接口,用于处理电子邮件的发送和接收。Java Mail API是Java平台上的标准API,它允许开发人员编写与邮件服务器进行交互的应用...

    javax.activation.jar

    例如,当你需要在Java应用中发送一封带有附件的电子邮件时,javax.activation.jar 就能派上用场。它能够帮助你创建和管理邮件的各个部分,包括正文、主题、收件人列表以及附件,而附件可以是任何类型的数据,通过...

Global site tag (gtag.js) - Google Analytics