java 发送邮件
来源:互联网 发布:js数组concat 编辑:程序博客网 时间:2024/06/07 16:14
内容发送邮件算是一个很常见的功能了。总结一下相关的知识点,算是做个笔记吧,也希望能帮到一些后来者吧,虽然,网上相关的一大堆。
发送邮件主要分三个步奏:
- 获取一个session 对象 ;
- 获取一个代表邮件的对象message ;
- 发送邮件;
代码 (能发送文件附件):
- 发送邮件类:
/** 1. @author 愚道 2. */public class MailUtils { Vector file = new Vector(); String filename = ""; /** * 添加文件组件 * * @param fileName * // 文件名称 */ public void attchFile(String fileName) { file.addElement(fileName); } /** * @param host * // stmp 服务器地址 * @param sendTo * // 收件人 * @param subject * // 主题 * @param context * // 内容 * @param code * // 激活码 * @param sendEmailName * // 发送人邮箱 * @param sendEmailPass * // 发送人密码 */ public void sendMail(String host, String sendTo, String subject, String context, final String sendEmailName, final String sendEmailPass) { // 获取session 对象 Properties props = new Properties(); props.setProperty("mail.host", host); Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(sendEmailName, sendEmailPass); } }); // 创建邮件对象 message Message message = new MimeMessage(session); try { // 设置发件人 message.setFrom(new InternetAddress(sendEmailName)); // 收件人 message.addRecipient(RecipientType.TO, new InternetAddress(sendTo)); // 只是给一个人发邮件 // 邮件标题 message.setSubject("test!"); // 创建 Multipart 对象 ,一个 Multipart 包含一个或多个 bodyPart 对象,来组成邮件的正文内容(包括附件)。 Multipart mp = new MimeMultipart(); MimeBodyPart mbpContent = new MimeBodyPart(); // 邮件内容 mbpContent.setContent(context, "text/html;charset=UTF-8"); mp.addBodyPart(mbpContent); // 文件附件 Enumeration efile = file.elements(); while (efile.hasMoreElements()) { MimeBodyPart mbpFile = new MimeBodyPart(); filename = efile.nextElement().toString(); FileDataSource fds = new FileDataSource(filename); mbpFile.setDataHandler(new DataHandler(fds)); String filename = new String(fds.getName().getBytes(), "UTF-8"); mbpFile.setFileName(MimeUtility.encodeText(filename)); mp.addBodyPart(mbpFile); } // 释放 file 文件 file.removeAllElements(); // 邮件内容 message.setContent(mp); // 设置发送时间 message.setSentDate(new Date()); // 保存邮件 message.saveChanges(); // 发送邮件 Transport.send(message); } catch (Exception e) { e.printStackTrace(); } }}
- 测试类 MailTest
/** * 邮件发送测试类 * * @author 愚道 */public class MailTest { private String host = null; // stmp 服务器地址 private String subject = null; // 主题 private String context = null; // 内容 private String sendEmailName = null; // 发件人邮箱 private String sendEmailPass = null; // 发件人邮箱密码 private String sendTo = null; // 收件人 // 发送邮件 public void sendMail() { // 读取配置文件获取发送邮件相关参数 Properties prop = new Properties(); InputStream in = MailUtils.class.getClassLoader().getResourceAsStream( "mail.properties"); try { prop.load(in); host = prop.getProperty("mail.host"); subject = prop.getProperty("mail.subject"); context = prop.getProperty("mail.context"); sendTo = prop.getProperty("mail.sendTo"); sendEmailName = prop.getProperty("mail.sendEmailName"); sendEmailPass = prop.getProperty("mail.sendEmailPass"); } catch (IOException e) { } MailUtils mail = new MailUtils(); // 添加文件 mail.attchFile("C:\\Users\\jett_jiang\\Desktop\\情人节玫瑰花源码).html"); // 发送邮件 mail.sendMail(host, sendTo, subject, context, sendEmailName, sendEmailPass); } public static void main(String[] args) { MailTest test = new MailTest(); test.sendMail(); }}
- 邮箱配置文件:
mail.host=smtp.exmail.qq.commail.subject= testmail.context=testContextmail.sendEmailName=*********@qq.commail.sendEmailPass=***********mail.sendTo=396524472@qq.com
说明 :
- mail.host : stmp服务器类型,163 邮箱配置smtp.163.com。设置为QQ邮箱时请注意去开通STMP 功能。
0 0
- [java]Java发送邮件
- java 邮件发送 --- 简单的邮件发送
- JAVA发送邮件及springboot发送邮件
- 用java发送邮件
- 用Java发送邮件
- java发送邮件源码
- java发送邮件
- Java发送邮件
- Java发送邮件程序
- java发送Email邮件
- 怎样用java发送邮件
- 利用java发送邮件
- java 邮件发送
- java邮件发送
- java邮件发送
- java定时发送邮件
- java发送邮件代码
- Java Mail 发送邮件
- 设计模式之观察者模式
- TS流分析
- leetcode_c++:树:Count Complete Tree Nodes(222 )
- JDK安装与环境变量配置
- 11 第一个特效 12灯泡开关案列 13 找对象 14操作对象
- java 发送邮件
- 用实例来理解IComparable和IComparer
- 浅谈Retrofit封装-让框架更加简洁易用
- JPA 多对多关联查询
- LintCode(easy)不同的路径
- 项目进展
- web.xml中【url-pattern的配置】
- Java 实现复制文本文件的两种方法
- HTTP1.0,1.1与2.0