1、仅使用Java Mail

使用163邮箱作为代理服务器:

引入依赖:

<dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version>
</dependency>

config.properties

host=smtp.163.com
from=xxxxxxxxxx@163.com
to=xxxxxxxxxxx@qq.com
affix=src/main/java/a.png
affixName=a.png
user=xxxxxxxxxx
pwd=xxxxxxxxxxx      #授权码
subject=\u6D4B\u8BD5\u53D1\u9001\u90AE\u4EF6

SendMailUtil.java

package com.lfy.cn.JExcelApiTest;import java.io.IOException;
import java.util.Properties;import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;public class SendMailUtil {static String HOST = ""; // smtp服务器static String FROM = ""; // 发件人地址static String TO = ""; // 收件人地址static String AFFIX = ""; // 附件地址static String AFFIXNAME = ""; // 附件名称static String USER = ""; // 用户名static String PWD = ""; // 163的授权码static String SUBJECT = ""; // 邮件标题static String[] TOS = null;static {try {Properties props = new Properties(); props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));//从自定义配置文件获取相关参数HOST=props.getProperty("host");FROM=props.getProperty("from");TO=props.getProperty("to");TOS=TO.split(",");AFFIX=props.getProperty("affix");AFFIXNAME=props.getProperty("affixName");USER=props.getProperty("user");PWD=props.getProperty("pwd");SUBJECT=props.getProperty("subject");} catch (IOException e) {e.printStackTrace();}}/*** 发送邮件* @param host* @param user* @param pwd*/public static void send(String context) {Properties props = new Properties();props.put("mail.smtp.host", HOST);//设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)props.put("mail.smtp.auth", "true");  //需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)Session session = Session.getDefaultInstance(props);//用props对象构建一个sessionsession.setDebug(true);MimeMessage message = new MimeMessage(session);//用session为参数定义消息对象try {message.setFrom(new InternetAddress(FROM));// 加载发件人地址InternetAddress[] sendTo = new InternetAddress[TOS.length]; // 加载收件人地址for (int i = 0; i < TOS.length; i++) {  sendTo[i] = new InternetAddress(TOS[i]);  }message.addRecipients(Message.RecipientType.TO,sendTo);message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(FROM));//设置在发送给收信人之前给自己(发送方)抄送一份,不然会被当成垃圾邮件,报554错message.setSubject(SUBJECT);//加载标题Multipart multipart = new MimeMultipart();//向multipart对象中添加邮件的各个部分内容,包括文本内容和附件BodyPart contentPart = new MimeBodyPart();//设置邮件的文本内容
            contentPart.setText(context);multipart.addBodyPart(contentPart);if(!AFFIX.isEmpty()){//添加附件BodyPart messageBodyPart = new MimeBodyPart();DataSource source = new FileDataSource(AFFIX);messageBodyPart.setDataHandler(new DataHandler(source));//添加附件的内容sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();//添加附件的标题messageBodyPart.setFileName("=?GBK?B?"+ enc.encode(AFFIXNAME.getBytes()) + "?=");multipart.addBodyPart(messageBodyPart);}message.setContent(multipart);//将multipart对象放到message中message.saveChanges(); //保存邮件Transport transport = session.getTransport("smtp");//发送邮件transport.connect(HOST, USER, PWD);//连接服务器的邮箱transport.sendMessage(message, message.getAllRecipients());//把邮件发送出去transport.close();//关闭连接} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {send("内容");}
}

运行效果:

2、总结

邮件发送分为四步:创建邮件发送器编写邮件内容书写邮件往来地址、发送邮件

spring提供了JavaMailSenderImpl对Java Mail的支持,JavaMailSenderImpl继承自javaMailSender。

JavaMailSenderImpl支持MimeMessages和SimpleMailMessages:

   MimeMessages为复杂邮件模板,支持文本、附件、html、图片等。

SimpleMailMessages实现了MimeMessageHelper,为普通邮件模板,支持文本。

转载于:https://www.cnblogs.com/ZeroMZ/p/11408589.html

Java-JavaMail邮件开发(1)Java Mail相关推荐

  1. java上位机开发(java基础)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] java基础就是把java环境安装好,把基础程序构建起来.至少说让开发的同学来说有一点信心.从这 ...

  2. php java优劣_PHP开发和JAVA开发网站的优劣对比

    PHP开发和JAVA开发网站的优劣对比有哪些?该篇文章由川软教育君整理并编辑: 1.开发网站最好选用一个比较成熟.资料比较多的CMS,因为自己开发后台工作量也不小,JAVA的CMS比PHP要少很多,所 ...

  3. java无框架开发,DON: java 小型web项目快速开发框架,实现无配置,直接关注业务开发.主要解决请求分发解析...

    #DON框架介绍 ##目标 启动零配置快速进入开发 开发时,请求controller路由零配置 配合windfly.jar工具包快速开发 最终实现加入jar包即可快速开发 ##主要特点 无需配置请求u ...

  4. JAVA架构与开发(JAVA架构是需要考虑的几个问题)

    在企业中JAVA架构师主要负责企业项目技术架构,企业技术战略制定,技术框架搭建,技术培训和技术攻坚的工作. 在JAVA领域,比较多的都是web项目.用于解决企业的数字化转型.对于JAVA架构师而言,平 ...

  5. java大数据开发训练营--Java Web 后端技术基础(上)

    题记: 文章内容输出来源:拉勾教育大数据开发高薪训练营 本篇文章是java学习课程中的一部分笔记. 本博文主要是记录一些基础的知识点,通过实操更容易理解 这章主要讲的是JAVA Web后端基础 一 W ...

  6. Java微服务开发指南-Java环境下的微服务

    本文涉及的内容,能让你学到什么? 本书适用于开发微服务的Java开发人员和架构师.我们在开始介绍微服务架构前,先讲述一些抽象的基本概念.不幸的是,使用新技术并不能神奇地解决分布式系统问题.但是我们通过 ...

  7. Java微服务开发指南 -- Java环境下的微服务

    Java环境下的微服务 本文涉及的内容,能让你学到什么? 本书适用于开发微服务的Java开发人员和架构师.我们在开始介绍微服务架构前,先讲述一些抽象的基本概念.不幸的是,使用新技术并不能神奇地解决分布 ...

  8. java adt简单开发,android java开发 第一天 之熟悉eclipse adt-Go语言中文社区

    1.下载并安装好android-sdk后(android-sdk里包含了android 1.6 ~ android4.0的所有api,支持各种版本的android) 2.下载adt(android d ...

  9. java实现邮件代理发送

    java实现邮件代理发送 java发送邮件功能支持代理,但是不支持http代理,支持sock代理(支持SOCKS V4或V5协议) 实现效果 使用自己的邮箱进行账密认证 以群组邮箱地址作为发件人进行发 ...

  10. Java新浪微博客户端开发第四步

    这一步是对之前进行较大的改动.增加的类也比较多.包结构如下: 0.Main:主函数入口 1.MainDialog:主界面 2.WeiboPanel:StatusPanel及CommentPanel的父 ...

最新文章

  1. 第二家公司Get技能总结
  2. linux 加密库 libsodium 安装
  3. SOA 案例研究:SOA 设计
  4. Spring4.X系列之Spring JDBC
  5. ajax 泛微oa表单js_OA项目总结
  6. Apache中的Order Allow,Deny用法详解
  7. SQL Server索引进阶第十篇:索引的内部结构
  8. 删除文件夹下所有的文件_VB删除文件和文件夹的方法
  9. mysql 几级缓存_Mysql中一级缓存二级缓存区别
  10. 实现输入提示 layui_ASP.NET Core SignalR :学习消息通讯,实现一个消息通知
  11. 中day参数介绍_浅谈生物制药中的 CHO 细胞培养工艺开发
  12. Unity根据电脑高中低配置加载不同模型
  13. 编程错题本——解析OpenWnn(1)命名问题
  14. JavaScript逻辑运算与或非
  15. Docker部署各种服务
  16. html2pdf无法导出图片解决方案(2020版)
  17. 6C.项链(C++)
  18. 业余羽毛球爱好者提高球艺16条法则
  19. c语言 中文转拼音,汉字转换拼音解决思路
  20. 1、高等数学 —求和运算法则

热门文章

  1. 已移植到loongarch64的libffi源码目录
  2. 我的压缩软件选择:7zip软件+Zip格式
  3. 高铁:繁忙时限制上车补票
  4. 航空界关于安全飞行的海恩法则
  5. 无人机会飞丢及编程上的改进思路
  6. 工作失误:没有分析进程消耗了这么多内存的原因
  7. 用科学数据求真:地月之间不可能电视直播
  8. oracle merge into where,Oracle merge into语法简介
  9. mysql界面导出数据库有乱码_导出的MYSQL数据库是乱码还可以变回中文吗
  10. java中多态含有math类_Java面试题汇总《Java基础、语法51-55》