`
2277259257
  • 浏览: 498528 次
  • 性别: 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.     }   
分享到:
评论

相关推荐

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

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

    javax.mail 1.6.0

    javax.mail jar 包,版本为1.6.0 用于java的邮件发送 提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft...

    javax.mail-1.4.4.jar(javamail实现用普通QQ邮箱发送邮件)

    JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

    javax.mail.1.4.7.jar

    java发送邮件的jar包. JavaMail,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。

    javax.mail-1.5.6

    java发送邮件的jar包. JavaMail,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API

    javax.mail.jar JavaMail所需jar包

    JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

    javaemail源码-java-mail:通过使用开源JavaMailAPI,我在教师的帮助下构建了一个程序,以通过Java代码发送电子邮件

    电子邮件Java 软件包gmailemail; 导入java.util.Properties; 导入java.util.logging.Level; 导入java.util.logging.Logger; 导入javax.mail.Session; 导入javax.mail.PasswordAuthentication; 导入javax.mail....

    JavaMail jsp发送邮件

    利用JavaMail来发送电子邮件 - HTML格式 InternetAddress[] address = null; //request.setCharacterEncoding("utf8"); String mailserver = "smtp.163.com";//发出邮箱的服务器 String From = request....

    Simple-email-app:使用 javax.mail 的简单电子邮件 Android 应用程序

    简单的电子邮件应用程序 使用 javax.mail 的简单电子邮件 Android 应用程序 ... 您必须通过访问以下 URL 来启用安全性较低的应用程序的访问权限以发送电子邮件: : 注意:此应用程序仅适用于 Gmail 帐户。

    javamail"java发送邮件所需要的包

    java发送邮件所需要的包,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API

    Java邮件发送依赖的jar包

    Java邮件发送依赖的jar包,包括commons-email-1.5.jar和javax.mail.jar,供有需要的朋友下载。

    JavaMail API详解.htm

    JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的邮件传输代理(Mail ...

    EmailingList:基于Java的电子邮件服务,可通过SMTP提取电子邮件

    一个将从表中读取并通过SMTP服务器发送电子邮件的Java程序。 对于SMTP发送,我使用了预先存在的Javax.mail.jar。 需要考虑以下几点:a)速度是最重要的考虑因素。 代码使用多线程以并行方式发送一封电子邮件。 b)...

    新版Android开发教程.rar

    支持 POP 、 IMAP 、 SMTP ,以及 AOL 和 GMAIL 电子邮件服务;支持 AIM 、 MSN 、雅虎通和 GTALK ;与谷歌日历同步;与 Android Market 联机;支持谷歌 “ 街景 ” 服务;包装盒内附 数据工具包。 更多信息 ...

    基于jsp+servlet的稿件处理系统源码+数据库+项目说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用...项目使用了javax-mail-1.60实现发送邮件功能,如果需要请自行导入。 ## 用户权限 status 属性,默认值0:未激活状态,10:普通用户,100:管理员用户。

    email4j:用于管理和发送电子邮件的高级Java API

    Email4J(Java电子邮件)是在javax.mail api之上构建的高级Java库,用于管理和发送电子邮件,而无需了解基础传输的任何规范。 有几个实体包装了传输处理的低级对象,从而为开发人员提供了一种友好而轻松的方式来...

    Client-Emailer:一种基于引用的客户的电子邮件地址自动发送电子邮件给各个文件的过程的系统。 专为开发票而开发

    Automatic-Emailer是一个旨在自动将文件通过电子邮件发送给大量客户端的过程的系统。 专为开发票而开发,并通过用户友好的GUI进行操作。 系统将客户端名称和电子邮件地址存储在本地数据文件中,并使用默认消息将引用...

    email-cmd-sender:通过命令行发送电子邮件的简单方法

    电子邮件 cmd 发件人通过命令行发送电子邮件的简单方法依赖关系&lt; dependencies&gt; &lt; dependency&gt; &lt; groupId&gt;junit&lt;/ groupId&gt; &lt; artifactId&gt;junit&lt;/ artifactId&gt; &lt; version&gt;3.8.1&lt;/ version&gt; &lt; scope&gt;test&lt;/ scope&gt; ...

    同位素邮件:同位素邮件客户端

    您可以通过设置SMTP服务器高级设置将电子邮件发送到演示帐户(isotope @ isotope): 端口:25 SMTP SSL:否 关注代码质量 开发同位素邮件的主要原因之一是学习和展示新技术,框架和库,以及如何将其用于现实生活...

    HurryTimeDriveThru

    该应用程序将向您发送电子邮件,以获取付款和接收食物的代码。先决条件javaFX Javax.mail javax.swing如何使用? 当您处于主要阶段时,可以按按钮从订单列表中添加/删除订单。 每个食物中的文本字段是您选择的食物...

Global site tag (gtag.js) - Google Analytics