闲来无事,写了个Java发送邮件的例子,做个记录,以便以后不时之需。
要用Java发送邮件,除过JDK本身的jar包之外,还需要两个额外的jar包:JavaMail和JAF。当然,如果你使用的JavaEE的JDK,那就不用单独去网上下载了,因为JavaEE的JDK中已经自带了这两个jar包。如果你使用的是JavaSE的JDK,那么你需要去Oracle的网站上下载这两个jar包。JavaMail 1.4.5 jar包下载地址是:http://www.oracle.com/technetwork/java/index-138643.html,JAF 1.1.1 jar包下载地址是:http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html。将这两个Zip包下载下来之后解压,将里边的几个jar包(mail.jar、dsn.jar、imap.jar、mailapi.jar、pop3.jar、smtp.jar和activation.jar)全部加到工程里边。下边就可以开始写程序了。加上测试程序,一共有4个类。
第一个类:MailSenderInfo.java,记录发送邮件所需的各种信息,如发送邮件服务器的地址、端口号、发件人邮箱、收件人邮箱等等。代码如下:
package com.test.mail;
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;}
}
第二个类:MyAuthenticator.java,邮箱用户名和密码认证器。代码如下:
package com.test.mail;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
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);}
}
第三个类:SimpleMailSender.java,用来发送邮件类。代码如下:
package com.test.mail;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 {  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; }  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; }}
第三个类:SendMailTest.java,发送邮件的测试类。代码如下:
package com.test.mail;public class SendMainTest { public static void main(String[] args) {  // 设置邮件服务器信息  MailSenderInfo mailInfo = new MailSenderInfo();  mailInfo.setMailServerHost("smtp.163.com");  mailInfo.setMailServerPort("25");  mailInfo.setValidate(true);    // 邮箱用户名  mailInfo.setUserName("zhangsan@163.com");  // 邮箱密码  mailInfo.setPassword("a1234567s");  // 发件人邮箱  mailInfo.setFromAddress("zhangsan@163.com");  // 收件人邮箱  mailInfo.setToAddress("zhangsan@sina.com");  // 邮件标题  mailInfo.setSubject("测试Java程序发送邮件");  // 邮件内容  StringBuffer buffer = new StringBuffer();  buffer.append("JavaMail 1.4.5 jar包下载地址:http://www.oracle.com/technetwork/java/index-138643.html\n");  buffer.append("JAF 1.1.1 jar包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html");  mailInfo.setContent(buffer.toString());    // 发送邮件  SimpleMailSender sms = new SimpleMailSender();  // 发送文体格式  sms.sendTextMail(mailInfo);  // 发送html格式  SimpleMailSender.sendHtmlMail(mailInfo);  System.out.println("邮件发送完毕"); }}

}
注意,你使用的邮箱必须是注册时间较长的,不然就会报错,
至此,Java邮件发送程序已经写完,当然了,这只是实现了最基本的功能。经过测试,可以将邮件发送出去。

【博闻强记】java来发送邮件相关推荐

  1. Java程序发送邮件

    之前上网有看到过别人总结的使用java程序发送邮件,于是自己下来练习,把自己学习的一些心得总结出来. 首先我们这里需要采用两个jar包: 需要的朋友可以自行上网去CSDN类似的网站上面找 顺便把自己测 ...

  2. java ssl发送邮件_通过SSL发送的Java邮件

    java ssl发送邮件 抽象 本博客的目的是演示如何使用Java Mail通过具有SSL连接的SMTP服务器发送电子邮件. 免责声明 这篇文章仅供参考. 在使用所提供的任何信息之前,请认真思考. 从 ...

  3. JAVA 实现发送邮件功能——邮箱验证码

    JAVA 实现发送邮件功能--邮箱验证码 在学习 Java 的过程中,由于项目需要使用邮箱验证码功能,所以进行了较为深入的学习,在这里写一下这个功能的实现方式. 首先 想要使用 Java 实现发送邮件 ...

  4. Java实现发送邮件带多个附件,可以直接用

    需求: 使用JavaMail发送邮件,要求实现带多个附件功能. 下面代码可以直接使用,也可以按需优化,实现的功能如下: 自定义输出debug信息. 自定义开启SSL认证. *QQ邮箱会自动检测开启,也 ...

  5. java实现发送邮件验证码

    java实现发送邮件验证码 ①.方法步骤 第一步我们先登录一个电子邮箱(qq邮箱为例) 在主页面的左上角有个设置按钮 进入设置 在设置下点击 账户 下拉找到 [POP3/IMAP/SMTP/Excha ...

  6. 使用Java Email发送邮件

    前言Email就是电子邮件.电子邮件的应用已经有几十年的历史了,我们熟悉的邮箱地址比如abc@example.com,邮件软件比如Outlook.网易闪电邮.Foxmail都是用来收发邮件的.当然,使 ...

  7. java实现发送邮件功能(可以添加附件)

    记录一下在java中发送邮件的实现方式,下面这个工具类是根据在网上查阅的资料自己整理出来的. 类中只有两个方法: 1.第一个就是普通的发送文本内容邮件的方法. 2.第二个是能发送附件邮件的方法.如果还 ...

  8. Java实现发送邮件功能

    目录 一.代码功能 二.功能实现 邮件实体 邮件参数配置 发送邮件 主函数 三.源码下载 四.商务合作 一.代码功能 Java实现发送邮件功能,使用mail包里面的函数进行实现此功能.话不多说,直接贴 ...

  9. 使用Java mail发送邮件附件出现附件上产生.eml文件夹的问题及附件名.bin结尾问题...

    近期,线上项目发出邮件是PDF附件但收到的邮件附件格式却不是PDF,发送邮件的技术为JAVA mail 经复现错误现象为下图: 163邮箱: QQ邮箱: eml问题排查思路: 1.首先,排除附件本身的 ...

  10. java mail发送邮件(单发和群发)

    1 服务器邮箱登录验证类 package com.sunrise.jop.common.mail;import javax.mail.Authenticator; import javax.mail. ...

最新文章

  1. JS字符串的下划线命名和驼峰命名转换
  2. concat() 方法用于连接两个或多个数组。
  3. 网站运行java_定制化Azure站点Java运行环境(5)
  4. opc调试软件_组态王和三菱OPC软件完美演绎天塔之光
  5. 安装itunes需要管理员身份_ITUNES无法安装,提示没有权限如何解决?
  6. 精读《V8 引擎 Lazy Parsing》
  7. Python语言数据类型-----数字和字符串
  8. java多级目录文件是否存在_Java文件夹操作,判断多级路径是否存在,不存在就创建(包括windows和linux下的路径字符分析)...
  9. php 半角,php 中全半角转换
  10. java怎么录入4位会员号_【Java】录入会员号会员生日会员积分等会员信息,并判断录入的会员号是否合法,具体如下图...
  11. python人脸照片分类_Python系列之三——人脸检测、人脸识别
  12. 智慧城管管理平台和监控系统建设方案
  13. c语言大刀符号程序,特殊符号大刀图案 | 手游网游页游攻略大全
  14. 有关于TCP三次握手和四次挥手的理解
  15. 360天擎彻底卸载的方法教程
  16. 红外近距空空导弹弹道仿真
  17. python爬虫——https请求
  18. 定陶创维科技-自己创业的经历(1)
  19. JUnit version 3.8 or later expected
  20. 热搜排序 半衰期的应用

热门文章

  1. 南京信息工程大学 第二届程序设计大赛团队赛 试题
  2. 工程师结婚还要加班,都是鹿晗干的好事
  3. Write-back,Write-through及write allocate
  4. 饭菜先生推出首款可随心定制的电子菜谱
  5. 【作业分享】Reverse Polish Notation | 数据结构·stack
  6. 基于MATLAB综合特征的图像检索系统
  7. WiFi接口(1)——模块适配(AW-CM358)
  8. Flutter Animation 3D仿真书本翻页动画效果
  9. apollo之集群部署(二)
  10. 多智时代,大数据发展趋势预测