文章目录

  • 一、前言
  • 二、事先准备步骤
  • 三、Java具体代码实现
    • 1. 类有哪几个?
    • 2.jar包配置
    • 3.关键代码功能简介
    • 4.具体代码
      • 4.1 MailConst.java 负责存放一些配置
      • 4.2 MailSenderUtil.java 主要功能的实现
      • 4.3 TestMail.java 测试java邮箱是否生效
  • 四、感悟

一、前言

想必发送邮件在日常开发中是十分常见的需求吧,鉴于官方网站一些不友好的例子,自己简化了下邮件发送的工具类。

废话不多说,这次的分享是Java发送邮件,进行发送邮件的邮箱是网易163邮箱,其中分为群发和单发邮件两个功能。先说下有什么步骤吧。
(若想直接借鉴的可以跳转到具体代码那一块,有完整的代码)

二、事先准备步骤

  1. 未注册邮箱的先注册邮箱,网易163邮箱的注册地址:https://mail.163.com/register/index.htm?from=163mail

  2. 已经有网易邮箱的,输入网址:https://mail.163.com, 登录进入网易邮箱中,点击设置下拉框中的POP3/SMTP/IMAP。

  1. 开启IMAP和POP3服务,这样才能通过Java代码进行发送邮件。


3.1 开启服务需要发送短信到指定号码。

3.2 开通IMAP服务之后,会出现一个显示着授权密码的窗口,请立马保存这个授权密码(如果忘记了,可以重新关闭IMAP服务,再次开启获得新的授权密码)。

3.3 接着开通POP3服务,一样的套路。开通成功之后。

三、Java具体代码实现

1. 类有哪几个?

src文件夹下(哪个文件夹都可以)

-MailConst.java 负责存放一些配置

-MailSenderUtil.java 主要功能的实现

-TestMail.java 测试java邮箱是否生效

2.jar包配置

2.1 pom项目下,在dependencies节点下增加两个子节点,内容如下(发送邮件的jar包)

  <!-- javaMail --><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.1</version></dependency><!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail --><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.4.4</version></dependency>
</dependencies>

2.2 若为普通Javaee项目,则引入以上两个jar包。

3.关键代码功能简介

(MailSenderUtil.java)

sendMailToSingle()方法 是选择单发邮件的

sendMailToUserArray() 方法是选择群发邮件的


4.具体代码

4.1 MailConst.java 负责存放一些配置
package com.lzh;/*** @Description 邮件常量* @Author 林泽鸿* @Date 2020/4/3 21:13*/
public class MailConst {//你的进行发送邮件的邮箱public static final String USER_NAME = "xxxxxxxxxx@163.com";//授权密码public static final String  PWD_CODE = "xxxxxxxxxx这里是刚才保存的授权密码";public static final String MAIL_HOST = "smtp.163.com";public static final String MAIL_SMTP_AUTH = "true";//邮件主题public static final String NOTIFICATION_MAIL_TITLE = "xxxxxxxxx邮件主题";//邮件内容public static final String NOTIFICATION_MAIL_CONTENT = "xxxxxxxxx你有一个新的通知,请前往xxxx进行查看!";}
4.2 MailSenderUtil.java 主要功能的实现
package com.lzh;import com.lzh.MailConst;import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.ArrayList;
import java.util.Properties;/*** @Description 邮件* @Author 林泽鸿* @Date 2020/4/3 21:03*/
public class MailSenderUtil {//建立服务器的邮件连接,从而可以进行发送邮件public static Session getMailSession(){//0.1 确定连接位置Properties properties = new Properties();//获取163邮箱smtp服务器的地址,properties.setProperty("mail.host", MailConst.MAIL_HOST);//是否进行权限验证。properties.setProperty("mail.smtp.auth", MailConst.MAIL_SMTP_AUTH);//0.2确定权限(账号和密码)Authenticator authenticator = new Authenticator() {@Overridepublic PasswordAuthentication getPasswordAuthentication() {//填写自己的163邮箱的登录帐号和授权密码(不是登录密码)。return new PasswordAuthentication(MailConst.USER_NAME,MailConst.PWD_CODE);}};//1 获得连接/*** properties:包含配置信息的对象,Properties类型*         配置邮箱服务器地址、配置是否进行权限验证(帐号密码验证)等** authenticator:确定权限(帐号和密码)** 所以就要在上面构建这两个对象。*/Session session = Session.getDefaultInstance(properties, authenticator);return session;}/***  指定一个人发送邮件,单个发送* @Param toEmailAddress  单个接受邮件的邮箱地址* @Param title 主题* @Param content  内容* @Author 林泽鸿* @Date 2020/4/3 22:00**/public static void sendMailTOSingleUser(String toEmailAddress,String title, String content){//获得邮箱服务器的连接Session session = getMailSession();//2 创建消息Message message = new MimeMessage(session);// 2.1 发件人 我们自己的邮箱地址,就是名称try {message.setFrom(new InternetAddress(MailConst.USER_NAME));/*** 2.2 收件人*         第一个参数:*             RecipientType.TO    代表收件人*             RecipientType.CC    抄送*             RecipientType.BCC    暗送*         比如A要给B发邮件,但是A觉得有必要给要让C也看看其内容,就在给B发邮件时,*         将邮件内容抄送给C,那么C也能看到其内容了,但是B也能知道A给C抄送过该封邮件*         而如果是暗送(密送)给C的话,那么B就不知道A给C发送过该封邮件。*     第二个参数*         收件人的地址,或者是一个Address[],用来装抄送或者暗送人的名单。或者用来群发。可以是相同邮箱服务器的,也可以是不同的*         这里我们发送给我们的qq邮箱*/message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toEmailAddress));//设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件message.setRecipient(Message.RecipientType.CC, new InternetAddress( MailConst.USER_NAME ));// 2.3 主题(标题)message.setSubject(title);//设置编码,防止发送的内容中文乱码。message.setContent(content, "text/html;charset=UTF-8");//3发送消息Transport.send(message);} catch (MessagingException e) {e.printStackTrace();}}/*** 群发邮件,也可以只发一个人。可设置主题和邮件内容,无附件* @Param toEmailAddressArray 接受邮件的所有邮箱地址* @Param title 主题* @Param content  内容* @Author 林泽鸿* @Date 2020/4/3 21:59**/public static void sendMailToUserArray(ArrayList<String> toEmailAddressArrayList , String title, String content) {String[] toEmailAddressArray = (String[]) toEmailAddressArrayList.toArray(new String[0]);//获得邮箱服务器的连接Session session = getMailSession();//2 创建消息Message message = new MimeMessage(session);// 2.1 发件人 我们自己的邮箱地址,就是名称try {message.setFrom(new InternetAddress(MailConst.USER_NAME));if (toEmailAddressArray != null) {// 为每个邮件接收者创建一个地址Address[] toEmailRecipients = null;toEmailRecipients = new InternetAddress[toEmailAddressArray.length];for (int i = 0; i < toEmailAddressArray.length; i++) {toEmailRecipients[i] = new InternetAddress(toEmailAddressArray[i]);}message.setRecipients(MimeMessage.RecipientType.TO, toEmailRecipients);}//设置抄送人,这里设置自己的是抄送人,免得被网易邮箱列为垃圾邮件message.setRecipient(Message.RecipientType.CC, new InternetAddress( MailConst.USER_NAME ));// 2.3 主题(标题)message.setSubject(title);//设置编码,防止发送的内容中文乱码。message.setContent(content, "text/html;charset=UTF-8");//3发送消息Transport.send(message);} catch (MessagingException ex) {ex.printStackTrace();}}}
4.3 TestMail.java 测试java邮箱是否生效
package com.lzh;import java.util.ArrayList;/*** @Description 测试发送邮件* @Author 林泽鸿* @Date 2020/4/3 20:55*/
public class TestMail {public static void main(String[] args) {ArrayList<String> emailArray = new ArrayList<>();//测试,收取邮件的邮箱,可以填写自己的发送邮件的邮箱emailArray.add("xxxxxxxxx@163.com");MailSenderUtil.sendMailToUserArray(emailArray,MailConst.NOTIFICATION_MAIL_TITLE,MailConst.NOTIFICATION_MAIL_CONTENT);}
}

四、感悟

  1. 学东西还是得实践比较有效率。
  2. 邮箱要是没有抄送人的话,多次尝试可能会被网易列为垃圾邮件,所以我这里弄了个抄送人,并将其设置为我发送邮件的邮箱。

Java发送邮件(网易163邮箱)(简单易操作篇)相关推荐

  1. Java使用QQ邮箱或网易163邮箱发送自定义CSS样式邮件

    Java使用QQ邮箱或网易163邮箱发送自定义CSS样式邮件 前言 一.战前准备 1.导入依赖 2.配置文件 3.邮箱工具类 二.战争开始 1.QQ邮箱发送 2.网易邮箱发送 战后反思 前言 我们可能 ...

  2. java发送邮件到qq邮箱_javamail发送邮件(简单邮件qq邮箱)

    /* * com.sun.mail javax.mail 1.5.4 */ /*上面是maven需要添加的依赖*/ package com.weiling.wl_erp.util; import or ...

  3. android mail发送邮件(包含163邮箱及qq邮箱,使用mail.jar,activation.jar,additionnal.jar)

    最近项目里有个发邮件的功能,不能调系统发邮件,也不能调用第三方的客户端,还必须可以发网易163邮箱,也可以发QQ邮箱.这让我想起来,当年初学java时自己写了个发送邮件的小demo,就是发给网易邮箱的 ...

  4. python模拟登录网易163邮箱并发送SOS邮件

    基本环境配置 1. Selenium - 建议使用低版本的Python-Selenium库,因为高版本在Chrome中不支持. pip3 install selenium==2.48.0 2. chr ...

  5. Java发送网易企业邮箱邮件

    Java发送网易企业邮箱邮件 /** 此方法使用smtp协议 查看网易企业邮箱各种协议的主机和端口可访问https://qiye.163.com/help/client-profile.html查看* ...

  6. java163邮箱服务器地址,JavaEmail发送网易163邮箱和QQ邮箱

    引入javamail的坐标依赖!省略!直接展示中心思想! @Component public class EmailUtil { /** * todo 发送QQ邮箱 */ public void se ...

  7. 新技能获取:如何查询网易163邮箱具体的注册日期,包括年月日

    这几天突发奇想,脑子里凭空产生了壹個困扰我好几天的问题:应该怎么做才能查询到网易163邮箱的具体注册日期?之所以会产生这样的疑问,是因为网易163邮箱本身提供的信息不够精确,在网易免费邮箱官方博客里, ...

  8. python 创建文件_Python入学首次项目,新手必看,简单易操作

    继昨天文章python软件pycharm安装教程之后,今天则给新手小白们分享一哈,怎么制作并创建文件.print "hello world": 如后期需要资料文件的则可以私信留言, ...

  9. 程序模拟网易163邮箱注册帮助文档

    今天有朋友想要用程序模拟网易163邮箱注册,但是遇到了一些小问题,小菜特准备了一篇文档,希望可以帮到需要的朋友. 模拟程序整体流程图: 整个过程必须使用同一个模拟对象! 注册说明: l  post方式 ...

最新文章

  1. 为什么不用原生Spring-Cloud-Config
  2. 信息系统分析与设计杨选辉_信息系统分析与设计(第2版)
  3. 给一份Webservice接口通用实现!!
  4. css 浮动在最上层_CSS的“层”峦“叠”翠
  5. MySQL数据库的备份和还原
  6. 40. Combination Sum II 组合总和 II
  7. BZOJ #3625 CF #438E 小朋友和二叉树
  8. 12.GitLab System Hooks
  9. 使用radioGroup的时候,每个radioButton的状态选择器要使用 state_checked=属性,不能使用selected...
  10. Rainmeter雨滴桌面秀教程
  11. r2游戏服务器网站,神秘揭晓《R2》公测服务器名称首度公布
  12. matlab产生大气湍流,一种大气湍流模拟装置的制造方法
  13. 软件开发流程中的测试及测试方法简介
  14. numpy.linalg 中的逆矩阵 inv
  15. Python+Vue计算机毕业设计个人学习博客系统wyz5v(源码+程序+LW+部署)
  16. dad my_My dad英语绘本.ppt
  17. java se1.6配套Jdk,javase 1.6与jdk1.6
  18. 压缩文件已损坏如何修复
  19. 重新渲染echarts图形
  20. 看清大厂面目:美光宣布暂停向华为供货!

热门文章

  1. Box推出文字处理器Box Notes
  2. 我的物联网项目之 合伙人羊毛党
  3. 如何在Excel表中使用Power BI的功能?
  4. 爬虫(二):新浪财经爬虫(获取文本信息)
  5. 电容笔哪个厂家的产品比较好?苹果平板的电容笔推荐
  6. 人工智能技术在预测学领域的应用
  7. python数据分析网上培训
  8. RTX 腾讯通停止服务,原用户该何去何从?
  9. 物联网行业想要取得快速发展,需要向哪几个趋势发展
  10. 使用FontLab Studio制作字体