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

您所在的位置:网站首页 设置邮箱163独立密码 Java发送邮件(网易163邮箱)(简单易操作篇)

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

2024-07-10 20:57| 来源: 网络整理| 查看: 265

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

一、前言

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

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

二、事先准备步骤

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

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

在这里插入图片描述

开启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包)

javax.mail mail 1.4.1 com.sun.mail javax.mail 1.4.4

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 = "[email protected]"; //授权密码 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() { @Override public 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 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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3