javaMail发送电子邮件的方法,自己总结了个步骤:
1、首先需要获取发送邮件的Session对象
Session session = Session.getDefaultInstance(properties,authorcator);
2、根据session对象,获取待发送的邮件消息
MimeMessage mimeMessage = new MimeMessage(session);
3、设置发件人,收件人,标题,邮件内容,附件,发送时间等;
4、利用Transport发送邮件
以下是居然的实现代码:
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; } }
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类型有所区别而已,具体请看代码:
- package com.china.test.mail;
- import java.io.UnsupportedEncodingException;
- import java.util.Date;
- import java.util.Properties;
- import javax.activation.DataHandler;
- import javax.activation.DataSource;
- import javax.activation.FileDataSource;
- 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.AddressException;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeBodyPart;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeMultipart;
- import javax.mail.internet.MimeUtility;
- /**
- * 简单邮件发送器
- * @author dove *
- */
- public class SimpleMailSender {
- /**
- * 以文本格式发送邮件 (支持群发,带附件)
- * @param senderInfo 待发送的邮件的信息
- * @return
- */
- public static boolean sendMail(MailSenderInfo senderInfo){
- boolean flag = false;
- // 判断是否需要身份验证
- MyAuthenticator authenticator = null;
- Properties props = senderInfo.getProperties();
- if(senderInfo.isValidate()){
- // 如果需要身份认证,则创建一个密码验证器
- authenticator = new MyAuthenticator(senderInfo.getUserName(), senderInfo.getPassword());
- }
- // 根据邮件会话属性和密码验证器构造一个发送邮件的session
- Session sendMailSession = Session.getDefaultInstance(props, authenticator);
- try {
- // 根据session创建一个邮件消息
- Message sendMailMessage = new MimeMessage(sendMailSession);
- // 创建邮件发送者地址
- Address from = new InternetAddress(senderInfo.getFromAddress());
- // 设置邮件消息的发送者
- sendMailMessage.setFrom(from);
- // 创建邮件接收者地址
- String[] tos = senderInfo.getToAddress();
- if(tos != null && tos.length != 0){
- InternetAddress[] to = new InternetAddress[tos.length];
- // 设置邮件消息的发送者
- for (int i = 0; i < tos.length; i++) {
- to[i] = new InternetAddress(tos[i]);
- }
- sendMailMessage.setRecipients(Message.RecipientType.TO, to);
- }
- // 设置邮件抄送者地址
- String[] toCCs = senderInfo.getToCarbonCopyAddress();
- if(toCCs != null && toCCs.length != 0){
- InternetAddress[] toCC = new InternetAddress[toCCs.length];
- // 设置邮件消息的发送者
- for (int i = 0; i < toCCs.length; i++) {
- toCC[i] = new InternetAddress(toCCs[i]);
- }
- sendMailMessage.addRecipients(Message.RecipientType.CC, toCC);
- }
- // 设置邮件密送者地址
- String[] toBCCs = senderInfo.getToBlindCarbonCopyAddress();
- if(toBCCs != null && toBCCs.length != 0){
- InternetAddress[] toBCC = new InternetAddress[toBCCs.length];
- for (int i = 0; i < toBCCs.length; i++) {
- toBCC[i] = new InternetAddress(toBCCs[i]);
- }
- sendMailMessage.addRecipients(Message.RecipientType.BCC, toBCC);
- }
- // 设置邮件主题
- sendMailMessage.setSubject(MimeUtility.encodeText(senderInfo.getSubject(),"utf-8","B"));
- // 设置邮件内容
- //sendMailMessage.setText(senderInfo.getContent());
- Multipart multipart = new MimeMultipart();
- // 邮件文本内容
- if(senderInfo.getContent() != null && !"".equals(senderInfo.getContent())){
- BodyPart part = new MimeBodyPart();
- part.setContent(senderInfo.getContent(), "text/plain;charset=utf-8");//设置邮件文本内容
- multipart.addBodyPart(part);
- }
- // 附件
- String attachFileNames[] = senderInfo.getAttachFileNames();
- int leng = attachFileNames == null ? 0 : attachFileNames.length;
- for (int i = 0; i < leng; i++) {
- BodyPart part = new MimeBodyPart();
- // 根据文件名获取数据源
- DataSource dataSource = new FileDataSource(attachFileNames[i]);
- DataHandler dataHandler = new DataHandler(dataSource);
- // 得到附件本身并至入BodyPart
- part.setDataHandler(dataHandler);
- // 得到文件名同样至入BodyPart
- part.setFileName(MimeUtility.encodeText(dataSource.getName()));
- multipart.addBodyPart(part);
- }
- sendMailMessage.setContent(multipart);
- // 设置邮件发送的时间
- sendMailMessage.setSentDate(new Date());
- // 发送邮件
- //Transport.send(sendMailMessage);
- Transport transport = sendMailSession.getTransport("smtp");
- transport.connect(senderInfo.getUserName(), senderInfo.getPassword());
- transport.send(sendMailMessage,sendMailMessage.getAllRecipients());
- transport.close();
- flag = true;
- } catch (AddressException e) {
- e.printStackTrace();
- } catch (MessagingException e) {
- e.printStackTrace();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- return flag;
- }
- public static boolean sendHtmlMail(MailSenderInfo senderInfo){
- boolean flag = false;
- // 判断是否需要身份验证
- MyAuthenticator authenticator = null;
- Properties props = senderInfo.getProperties();
- if(senderInfo.isValidate()){
- // 如果需要身份认证,则创建一个密码验证器
- authenticator = new MyAuthenticator(senderInfo.getUserName(), senderInfo.getPassword());
- }
- // 根据邮件会话属性和密码验证器构造一个发送邮件的session
- Session sendMailSession = Session.getDefaultInstance(props, authenticator);
- try {
- // 根据session创建一个邮件消息
- Message sendMailMessage = new MimeMessage(sendMailSession);
- // 创建邮件发送者地址
- Address from = new InternetAddress(senderInfo.getFromAddress());
- // 设置邮件消息的发送者
- sendMailMessage.setFrom(from);
- // 创建邮件接收者地址
- String[] tos = senderInfo.getToAddress();
- if(tos != null && tos.length != 0){
- InternetAddress[] to = new InternetAddress[tos.length];
- // 设置邮件消息的发送者
- for (int i = 0; i < tos.length; i++) {
- to[i] = new InternetAddress(tos[i]);
- }
- sendMailMessage.setRecipients(Message.RecipientType.TO, to);
- }
- // 设置邮件抄送者地址
- String[] toCCs = senderInfo.getToCarbonCopyAddress();
- if(toCCs != null && toCCs.length != 0){
- InternetAddress[] toCC = new InternetAddress[toCCs.length];
- // 设置邮件消息的发送者
- for (int i = 0; i < toCCs.length; i++) {
- toCC[i] = new InternetAddress(toCCs[i]);
- }
- sendMailMessage.addRecipients(Message.RecipientType.CC, toCC);
- }
- // 设置邮件密送者地址
- String[] toBCCs = senderInfo.getToBlindCarbonCopyAddress();
- if(toBCCs != null && toBCCs.length != 0){
- InternetAddress[] toBCC = new InternetAddress[toBCCs.length];
- for (int i = 0; i < toBCCs.length; i++) {
- toBCC[i] = new InternetAddress(toBCCs[i]);
- }
- sendMailMessage.addRecipients(Message.RecipientType.BCC, toBCC);
- }
- // 设置邮件主题
- sendMailMessage.setSubject(MimeUtility.encodeText(senderInfo.getSubject(),"utf-8","B"));
- // 设置邮件内容
- //sendMailMessage.setText(senderInfo.getContent());
- Multipart multipart = new MimeMultipart();
- // 邮件文本内容
- if(senderInfo.getContent() != null && !"".equals(senderInfo.getContent())){
- BodyPart part = new MimeBodyPart();
- part.setContent(senderInfo.getContent(), "text/html;charset=utf-8");//设置邮件文本内容
- multipart.addBodyPart(part);
- }
- // 附件
- String attachFileNames[] = senderInfo.getAttachFileNames();
- int leng = attachFileNames == null ? 0 : attachFileNames.length;
- for (int i = 0; i < leng; i++) {
- BodyPart part = new MimeBodyPart();
- // 根据文件名获取数据源
- DataSource dataSource = new FileDataSource(attachFileNames[i]);
- DataHandler dataHandler = new DataHandler(dataSource);
- // 得到附件本身并至入BodyPart
- part.setDataHandler(dataHandler);
- // 得到文件名同样至入BodyPart
- part.setFileName(MimeUtility.encodeText(dataSource.getName()));
- multipart.addBodyPart(part);
- }
- sendMailMessage.setContent(multipart);
- // 设置邮件发送的时间
- sendMailMessage.setSentDate(new Date());
- // 发送邮件
- //Transport.send(sendMailMessage);
- Transport transport = sendMailSession.getTransport("smtp");
- transport.connect(senderInfo.getUserName(), senderInfo.getPassword());
- transport.send(sendMailMessage,sendMailMessage.getAllRecipients());
- // 关闭transport
- transport.close();
- flag = true;
- } catch (AddressException e) {
- e.printStackTrace();
- } catch (MessagingException e) {
- e.printStackTrace();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- return flag;
- }
- public static void main(String[] args) {
- MailSenderInfo mailInfo = new MailSenderInfo();
- mailInfo.setMailServerHost("smtp.sina.com");
- mailInfo.setMailServerPort("25");
- mailInfo.setValidate(true);
- mailInfo.setUserName("********@sina.com");
- mailInfo.setPassword("*********");// 您的邮箱密码
- mailInfo.setFromAddress("jingjingwang163@sina.com");
- String[] to = {"********@bj.china.com"};
- mailInfo.setToAddress(to);
- String[] toCC = {"**********@qq.com"};
- mailInfo.setToCarbonCopyAddress(toCC);
- String[] toBCC = {"*******@sina.com"};
- mailInfo.setToBlindCarbonCopyAddress(toBCC);
- mailInfo.setAttachFileNames(new String[]{"C:/Documents and Settings/Administrator/桌面/考勤休假制度表格(新).xls","C:/Documents and Settings/Administrator/桌面/dove.jpg"});
- mailInfo.setSubject("发送HTML邮件");
- 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>";
- mailInfo.setContent(body);
- // 这个类主要来发送邮件
- System.out.println(SimpleMailSender.sendHtmlMail(mailInfo));;//发送文体格式
- }
- }
相关推荐
在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` 这个标题暗示了我们正在讨论的是 JavaMail 的 1.6.2 版本,这是一个稳定且广泛使用的版本。 JavaMail API 提供了一套标准的接口,用于与邮件...
基于Maven的javax.mail发送邮件例子程序 pom.xml添加依赖jar: ...Message对象将存储发送的电子邮件信息,如主题,内容等等 javax.mail.Transport类 Transport传输邮件类,采用send方法是发送邮件。 * */
在给定的压缩包文件中,我们有两个关键组件:`javax.mail-1.5.5.jar` 和 `javamail1_4_5.zip`。 `javax.mail-1.5.5.jar` 是JavaMail API的一个版本,版本号为1.5.5。这个API定义了一组接口和类,用于与各种邮件系统...
在Java编程环境中,`javax.mail.jar` 是一个非常重要的库,它提供了用于发送和接收电子邮件的API。这个库是JavaMail API的一部分,主要用于处理SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP(因特网消息...
`javax.mail` 是Java平台上的一个标准API,用于处理电子邮件通信。这个API提供了一套全面的接口和类,使得开发者可以方便地实现邮件发送、接收、管理邮箱等操作。`javax.mail-1.5.2` 版本是这个库的一个特定发行版,...
javax.mail.jar 和 activation.jar 是实现这一功能的关键库文件,它们提供了JavaMail API,允许开发者通过Java代码来发送和接收电子邮件。 javax.mail.jar 包含了JavaMail API的核心类和接口,这些接口和类主要...
JavaMail是Java编程环境中用于处理电子邮件的一套强大的API,它为开发者提供了丰富的功能,使得在应用程序中发送、接收和管理邮件变得极其便捷。标题中的"javax.mail.1.4.7.jar"指的是JavaMail的一个特定版本,即...
根据提供的文件信息,我们可以深入探讨如何使用`javax.mail`包中的类来实现通过QQ邮箱服务发送电子邮件的功能。这里的关键步骤包括设置SMTP服务器、配置安全连接(如SSL/TLS)、创建邮件会话、构建邮件对象以及最终...
在Java开发中, javax.mail-1.6.0 是一个重要的库,用于处理电子邮件的发送与接收。这个库为开发者提供了丰富的API,使得我们可以方便地实现邮件的创建、发送、接收以及管理等操作。以下是对javax.mail-1.6.0库的...
在Java编程环境中,发送电子邮件是一项常见的任务,而这通常涉及到对 javax.mail-api.jar 和 activation.jar 这两个库的使用。这两个JAR文件是JavaMail API的核心组成部分,为开发者提供了丰富的功能来处理邮件的...
"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是Java编程环境中用于处理电子邮件的一套API,它提供了丰富的功能,允许开发者发送、接收和操作邮件。在JavaMail的实现中,通常会用到三个关键的JAR包:`activation-1.1.jar`、`javax.mail-api-1.5.6.jar`和...
标题中的 "javax.mail-1.6.0.jar.7z" 指的是JavaMail 1.6.0版本的jar包,已经压缩成7z格式,用于方便开发者下载和使用。描述中提到的“下载后解压到当前文件夹即可”,意味着开发者可以将这个压缩包解压,并将其包含...
总的来说,`javax.mail-1.6`是Java开发者处理电子邮件的标准库,它提供了丰富的API和强大的功能,使得编写邮件应用变得简单易行。无论你是要发送简单的文本邮件,还是构建复杂的邮件系统,JavaMail都能满足需求。
4. **commons-email-1.2.jar**:这是Apache Commons Email库,提供了一组高级API,简化了使用JavaMail发送电子邮件的过程。这个库包含了丰富的功能,如添加附件、设置HTML内容、发送多部分邮件等,使邮件发送更加...
在Java编程中,发送电子邮件是一项常见的任务,尤其在自动化通知、数据报告或者用户验证等场景中。本实例将深入探讨如何使用`mail.jar`和`activation-1.1.jar`这两个库来实现邮件发送功能。这两个JAR文件是JavaMail ...
这个压缩包"javax.mail-1.5.1.zip"包含的是JavaMail 1.5.1版本的JAR文件,即"javax.mail-1.5.1.jar"。这个JAR文件包含了发送和接收电子邮件所需的所有类和接口,使得开发者能够方便地在Java环境中实现邮件功能。 ...
在Java编程领域,`javax.mail.jar`是一个重要的库文件,它包含了Java Mail API的所有类和接口,用于处理电子邮件的发送和接收。Java Mail API是Java平台上的标准API,它允许开发人员编写与邮件服务器进行交互的应用...
例如,当你需要在Java应用中发送一封带有附件的电子邮件时,javax.activation.jar 就能派上用场。它能够帮助你创建和管理邮件的各个部分,包括正文、主题、收件人列表以及附件,而附件可以是任何类型的数据,通过...