准备工作

要想实现邮件发送, 需要先打开发送邮箱的 POP3/SMTP 服务,打开方式在 设置>帐户 中去打开,打开之后如果是qq邮箱会获得一个授权码,用授权码登录qq邮箱的服务器。其他邮箱开启方法都类似

使用到的 jar 包

mail.jar:https://repo1.maven.org/maven2/javax/mail/mail/1.4.7/mail-1.4.7.jar

activation.jar:https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar

maven 地址:

<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>

实现代码

package com.pro.email;

import com.sun.mail.util.MailSSLSocketFactory;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties; public class MailDemo {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com"); // 设置qq邮件服务器
prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议
prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码 // 关于qq邮箱, 还要设置SSL加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf); // 使用 JavaMail 发送邮件的5个步骤 // 1. 定义整个应用程序所需要的环境信息的 Session 对象
// 这一步是qq邮箱才有, 其他邮箱不用
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
// 发件人邮箱 用户名和授权码
return new PasswordAuthentication("334466@qq.com", "abssktasyncawait");
}
}); // 开启 Session debugger 模式, 可以看到邮件发送的运行状态
session.setDebug(true); // 2. 通过 Session得到 transport 对象
Transport transport = session.getTransport(); // 3. 使用邮箱用户名和授权码连上邮件服务器 (登陆)
transport.connect("smtp.qq.com", "334466@qq.com", "abssktasyncawait"); // 4. 创建邮件: 写邮件
MimeMessage message = new MimeMessage(session); // 设置邮件的发件人
message.setFrom(new InternetAddress("334466@qq.com")); // 设置邮件的收件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress("789654123@qq.com")); // 邮件标题
message.setSubject("Java Test邮件"); // ========= 复杂邮件内容 =========
// 准备附件数据
MimeBodyPart fileMime = new MimeBodyPart();
fileMime.setDataHandler(new DataHandler(new FileDataSource("src/resource/pro.txt")));
fileMime.setFileName("pro.txt"); // 设置文件名称 // 准备图片数据
MimeBodyPart image = new MimeBodyPart();
// 图片需要经过数据处理, DataHandler: 数据处理
DataHandler dh = new DataHandler(new FileDataSource("src/resource/test.jpg"));
image.setDataHandler(dh); // 把处理的图片数据放到body中
image.setContentID("test.jpg"); // 给图片设置ID, 后面可以用到
image.setFileName("test.jpg"); // 准备正文数据
MimeBodyPart text = new MimeBodyPart();
text.setContent("<a href='https://www.tmall.com/' target='_blank'>这是一封正文带图片的邮件 <img src='cid:test.jpg' /></a>", "text/html; charset=UTF-8"); // 描述数据关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.addBodyPart(fileMime);
mm.setSubType("mixed"); // mixed 最大 支持附件, related 支持图片 // 把编辑的邮件保存到消息中, 保存更改
message.setContent(mm);
message.saveChanges();
// ========= 复杂邮件内容 ========= // 5. 发送邮件
transport.sendMessage(message, message.getAllRecipients()); // 关闭连接
transport.close();
}
}

Java 使用 mail.jar 实现邮件发送的更多相关文章

  1. 用系统默认mail服务实现邮件发送

    用系统默认mail服务实现邮件发送 1.操作步骤 第一步:设备服务器发送邮件要用的,邮箱地址,账号密码 编辑/etc/mail.rc vim /etc/mail.rc 在文件的结尾追加,账号信息配置 ...

  2. centos下利用mail命令进行邮件发送

    centos下默认自带mail命令: 可以用如下命令查看存放位置: which mail 结果如下: 如果没有安装可以使用 如下命令安装 yum -y install mailx 利用mail命令进行 ...

  3. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://www.cnblogs.com/pojo/p/14276637.html ...

  4. 使用Spring的JAVA Mail支持简化邮件发送(转)

    闲来无事,翻看<Spring in Action>,发现Spring集成了对JAVA Mail的支持,有点小激动的看了一遍,嗯,话说真的简单了很多. Spring的邮件发送的核心是Mail ...

  5. Java网络编程:QQ邮件发送客户端程序设计

    目录 一.目标介绍 1.认识SMTP(邮件传输协议) 2.POP3(邮件接收协议) 二.基于Base64编码邮箱及授权码 1.开通QQ邮箱SMTP/POP3服务 2.Java编写BASE64编码程序 ...

  6. Java Mail 实现第三方邮件发送功能

    1 创建一个用于发送邮件的类 package com.latiny.service; import java.io.IOException; import java.io.InputStream; i ...

  7. 使用Spring的JAVA Mail支持简化邮件发送

    http://www.cnblogs.com/codeplus/archive/2011/11/03/2232893.html

  8. java 邮件发送工具类

    首先需要下载mail.jar文件,我个人通常是使用maven中心库的那个: <dependency> <groupId>javax.mail</groupId> & ...

  9. java 邮件发送工具类【来源网络自己已经实际应用】

    最近在做一个Java发送邮件的工具类,现在分享一下完整的代码 首先需要java邮件的包javax.mail-1.5.4.jar 之前因为链接给错了,很不好意思,现在重新发一次. 包在这里可以下载htt ...

随机推荐

  1. MVC部署出现403.14问题记录

    1.问题截图 2.解决办法有几种 1)在system.webServer下增加,这种是不推荐的. <modules runAllManagedModulesForAllRequests=&quo ...

  2. Oh my God, Swagger API文档竟然可以这样写?

    最好的总会在不经意间出现. 作为后端程序员,免不了与前端同事对接API, 一个书写良好的API设计文档可有效提高与前端对接的效率. 为避免联调时来回撕逼,今天我们聊一聊正确使用Swaager的姿势. ...

  3. Linux 安装 MySQL 8 数据库(图文详细教程)

    本教程手把手教你如何在 Linux 安装 MySQL 数据库,以 CentOS 7为例. 1. 下载并安装 MySQL 官方的 Yum Repository wget -i -c https://re ...

  4. Python开发:一个直播弹幕机器人诞生过程,自动发送弹幕

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬取B站弹幕视频讲解 https://www.bilibili.com/vide ...

  5. 第八章 SMS--短信服务

    今天咱们接着 上一篇 第七章 Rocketmq–消息驱动 继续写 SpringCloud Alibaba全家桶 -> 第八章 SMS–短信服务,废话不多说,开干 8.1 短信服务介绍 短信服务( ...

  6. C#中RDLC合并两个列的值

    使用 & 符号连接 =Fields!ID.Value & Fields!Name.Value

  7. 道高一丈,且看CWE4.2的新特性

    摘要:CWE在今年2/24发布4.0,首次将硬件安全漏洞纳入了CWE中,6/25发布4.1, 8/20就发布了4.2. 1. 按照惯例,先说故事 我们先说下CWE的幕后老板--MITRE[1]. MI ...

  8. %@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%报错

    用eclipse写jsp代码时发现下面两行代码报错:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix=&qu ...

  9. java Stream学习笔记

    1.Stream与io无关. 2.Stream和用普通的循环没有太大区别,甚至时间复杂度更高,代码可读性差(通常代码行数更少). 3.流操作就是把循环要做的任务单独抽取出来,最终通过编译在一起. 来看 ...

  10. 【wp】2020XCTF_逆向

    前几天的XCTF最后一场终于打完了,三场比赛下来对逆向部分的大概感觉是从第一场的啥都不会做(一道lua+一道apk)到后来的终于能有参与度,至少后两场的题目都是pc逆向,虽然特殊架构但好歹能做(tcl ...