申请一个免费邮箱并且进入设置 开启服务 IMAP/SMTP服务器,设置开启后会获得一个授权码。

package test.testEmail;import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;/*** @author duantingwei* @since 2021/8/27*/
public class SendEmail {//发件人邮箱public static String myEmailAccount = "teenway@163.com";//授权码 (为了安全,而非邮箱密码)public static String myEmailPassword = "KALSLIYITZVVVQJR";// 网易163邮箱的 SMTP 服务器地址为: smtp.126.compublic static String myEmailSMTPHost = "smtp.163.com";// 收件人邮箱(替换为自己知道的有效邮箱)public static String receiveMailAccount = "2575820369@qq.com";public static void main(String[] args) throws Exception {// 1. 创建参数配置, 用于连接邮件服务器的参数配置Properties props = new Properties();                    // 参数配置props.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)props.setProperty("mail.smtp.host", myEmailSMTPHost);   // 发件人的邮箱的 SMTP 服务器地址props.setProperty("mail.smtp.auth", "true");            // 需要请求认证// PS: 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 (为了提高安全性, 邮箱支持SSL连接, 也可以自己开启),//     如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 SSL 安全连接” 等错误,//     取消下面 /* ... */ 之间的注释代码, 开启 SSL 安全连接。/*// SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接,//                  需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助,//                  QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)final String smtpPort = "465";props.setProperty("mail.smtp.port", smtpPort);props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");props.setProperty("mail.smtp.socketFactory.fallback", "false");props.setProperty("mail.smtp.socketFactory.port", smtpPort);*/// 2. 根据配置创建会话对象, 用于和邮件服务器交互Session session = Session.getInstance(props);// 设置为debug模式, 可以查看详细的发送 logsession.setDebug(true);// 3. 创建一封邮件MimeMessage message = createMimeMessage(session, myEmailAccount, receiveMailAccount);// 4. 根据 Session 获取邮件传输对象Transport transport = session.getTransport();// 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错////    PS_01: 如果连接服务器失败, 都会在控制台输出相应失败原因的log。//    仔细查看失败原因, 有些邮箱服务器会返回错误码或查看错误类型的链接,//    根据给出的错误类型到对应邮件服务器的帮助网站上查看具体失败原因。////    PS_02: 连接失败的原因通常为以下几点, 仔细检查代码://           (1) 邮箱没有开启 SMTP 服务;//           (2) 邮箱密码错误, 例如某些邮箱开启了独立密码;//           (3) 邮箱服务器要求必须要使用 SSL 安全连接;//           (4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务;//           (5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。//transport.connect(myEmailAccount, myEmailPassword);// 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人transport.sendMessage(message, message.getAllRecipients());// 7. 关闭连接transport.close();}/*** 创建一封只包含文本的简单邮件** @param session     和服务器交互的会话* @param sendMail    发件人邮箱* @param receiveMail 收件人邮箱* @return* @throws Exception*/public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail) throws Exception {// 1. 创建一封邮件MimeMessage message = new MimeMessage(session);// 2. From: 发件人message.setFrom(new InternetAddress(sendMail, "your learning supervisor", "UTF-8"));// 3. To: 收件人(可以增加多个收件人、抄送、密送)message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "QQ用户", "UTF-8"));// 4. Subject: 邮件主题message.setSubject("2000 English I composition", "UTF-8");// 5. Content: 邮件正文(可以使用html标签)message.setContent("A big contrast is shown in the picture. In 1900 there was only ship in the searich in fish, while in 1995, there became only one fish in the sea crowed with ships.The caption demonstrates that it was the ever-developing fishing industry that caused the devastating effects on the fishing resource.\n" +"\n" +"The picture conveys a deep concern about the ecological disaster which is being brought about by the over-fishing driven by short-term commercial insterests. It also implies a more worrisome comsequence. The profit-oriented behavior may penetrate into other fields, which results in the abuse of more resourse.\n" +"\n" +"To solve this concern, we should spare no efforts in protecting natural resources. Laws should be enforced to prohibit the actions of blind exploitation, such as over-fishing in this picture. In addition, people should be educated to realize the value of these resources and voluntarily protect them.", "text/html;charset=UTF-8");// 6. 设置发件时间message.setSentDate(new Date());// 7. 保存设置message.saveChanges();return message;}
}

效果演示

JAVA发送邮件案例相关推荐

  1. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

  2. java进阶案例下载_java进阶案例

    java进阶案例: 数据类型,字符,数值,范围,布尔 :byte -128~127. 面向对象:protect :重载与构造 (一). this封装:static:继承:多态: 1.方法覆盖:supe ...

  3. 用java发送邮件(黄海已测试通过)

    /*** java发送带附件的邮件* 周枫* 2013.8.10*/ package com.dsideal.Util; import javax.mail.*; import javax.mail. ...

  4. Java继承概述以及Java继承案例和继承的好处

    Java继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可. 2.在Java中通过extends关键字可以实现类与类的 ...

  5. Java发送邮件(带附件)

    实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...

  6. 手把手教你实现Java发送邮件(1)-发送简单的文本

    说明:本博客已经收藏至我的gitee中的code_demo仓库(点击此链接跳转)中,且gitee中有相应的代码~ 欢迎访问~~ 不仅仅是code,还有一些通俗的讲解哦~ 文章目录 一.Java实现邮件 ...

  7. 复制java文件 案例

    复制java文件 案例 方法 一次读写一个字符数据 方法 一次读写一个字符数组

  8. 基于《悉尼协议》框架下Java课程案例教学研究

    文章目录 基于<悉尼协议>框架下Java课程案例教学研究 一.Java课程教学存在问题 (一)Java课程目标定位不足 (二)Java课程教学存在的问题 1. 教材内容更新滞后 2. 学习 ...

  9. java继承的作用_Java继承概述以及Java继承案例和继承的好处

    Java继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可. 2.在Java中通过extends关键字可以实现类与类的 ...

  10. 手把手教你用java发送邮件

    手把手教你用java发送邮件 一.学习目的 1.学会用jmail发送邮件 2.学会自动发送邮件需要的一些设置 二.准备内容(以163邮箱示范) 1.个人邮箱 首先登录163个人邮箱,然后在个人页面-设 ...

最新文章

  1. MFC-4简单的窗口重绘(非部分重绘)
  2. 从CCF的改革看中国科技社团的改革
  3. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
  4. 使用正则表达式模拟读写INI文件
  5. Matlab中newff函数使用方法和搭建BP神经网络的方法
  6. TS对象类型 -- 接口(interface)
  7. K3 LEDE固件更改FRP客户端版本
  8. Win7共享文件夹简单?这个共享问题可以难倒90%的人
  9. LeetCode 57. 插入区间(一次遍历)
  10. android防止左向右滑出程序,Android向右滑动关闭Activity(高仿知乎微信)
  11. html写法影响加载,html加载顺序以及影响页面二次渲染额的因素
  12. 百度硬盘搜索 2.3 试用手记
  13. 能制作引导系统型U盘的几个软件工具
  14. java-设置电脑音量
  15. 如何能从自我怀疑中走出来?
  16. 应用宝认领应用签名_腾讯开放平台第三方应用签名参数sig的说明
  17. 电子设计大赛-电源电路
  18. 论文笔记2.5D lightweight RIU-Net for automatic liver and tumor segmentation from CT
  19. 2016 -Nginx的负载均衡 - 一致性哈希 (Consistent Hash)
  20. Google美国搜索市场份额近67%

热门文章

  1. Spark的StandAlone模式原理和安装、Spark-on-YARN的理解
  2. 手机APP应用怎样从公网访问局域网WEB应用
  3. python 反弹shell,加了UDP
  4. 关于Handler和子线程的记录
  5. github上一些酷炫效果
  6. opensips1.6.4+freeradius2.1.10+radiusclient0.5.6 problem do accounting
  7. 使用 MySQL C API 访问 MySQL — 示例
  8. Jason与Xml的解析过程
  9. Problem J: 零起点学算法89——程序设计竞赛
  10. STL之set的应用