Java通过JavaMail发送邮件功能

本文实例为大家分享了Java通过JavaMail发送邮件的具体代码,供大家参考,具体内容如下

这里我用的是SpringBoot项目

1、引入相关jar包

<!--java-email-->
  <dependency>
   <groupId>com.sun.mail</groupId>
   <artifactId>javax.mail</artifactId>
   <version>1.6.2</version>
</dependency>

2、将QQ邮箱的POP3/SMTP服务打开(其他邮箱自行百度,个别邮箱跳过)

3、创建邮件发送属性

  • 邮件发送服务器:QQ邮箱:smtp.qq.com,其他邮箱服务器地址自行百度
  • 16位授权码:16位授权码可有多个,个别邮箱可直接用密码代替(本人用的免费的企业邮箱,可直接用密码登录)

Properties prop = new Properties();
//设置邮件服务器
prop.setProperty("mail.host", "smtp.qq.com");
// 邮件发送协议
prop.setProperty("mail.transport.protocol", "smtp");
// 需要验证用户名密码
prop.setProperty("mail.smtp.auth", "true");
// 邮箱设置SSL加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
//1、创建定义整个应用程序所需的环境信息的 Session 对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                //传入发件人账号和授权码
                return new PasswordAuthentication("1825508930@qq.com", "16位授权码");
            }
        });
        //2、通过session获取transport对象
        Transport transport = session.getTransport();
        //3、通过transport对象设置发件账号和授权码连接邮箱服务器
        transport.connect("smtp.qq.com", "1825508930@qq.com", "16位授权码");

4、设置邮件内容

图片

MimeBodyPart image = new MimeBodyPart();
DataHandler handler = new DataHandler(new FileDataSource("本地文件路径"));
image.setDataHandler(handler);
//设置图片id
image.setContentID("test.jpg");
//准备文本
MimeBodyPart text = new MimeBodyPart();
//通过cid:图片id设置文件路径
text.setContent("<h1>测试图片</h1><img src='cid:test.jpg' width='100' height='100'>", "text/html;charset=utf-8");

附件

MimeBodyPart appendix = new MimeBodyPart();
appendix.setDataHandler(new DataHandler(new FileDataSource("本地文件路径")));
appendix.setFileName("test.txt");

将图片附件存入邮件中并发送

//拼装邮件正文
MimeMultipart mimeMultipart = new MimeMultipart();

//将设置的图片放入邮箱
mimeMultipart.addBodyPart(image); 

 mimeMultipart.addBodyPart(text);
//文本和图片内嵌
mimeMultipart.setSubType("related");
 

//将拼装好的正文内容设置为主体
MimeBodyPart contentText = new MimeBodyPart();
contentText.setContent(mimeMultipart);
 

//拼接附件
MimeMultipart allFile = new MimeMultipart();
//附件
allFile.addBodyPart(appendix);
//正文
allFile.addBodyPart(contentText);
//正文和附件都存在邮件中,所有类型设置为mixed
allFile.setSubType("mixed");
//放到Message消息中
mimeMessage.setContent(allFile);
//保存修改
mimeMessage.saveChanges();
//发件人邮箱(必须)、别称(可忽略)
mimeMessage.setFrom(new InternetAddress("1825508930@qq.com", "别称"));
 
//5、发送邮件(如果需要群发的话,为了保护隐私就不推荐使用mimeMessage.addRecipients(),会将所有收件人一同展示出来,建议循环使用mimeMessage.setRecipients进行发送)
//设置收件人
 mimeMessage.setRecipients(Message.RecipientType.TO, "123456@qq.com");
//发送
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
 //6、关闭连接
transport.close();
log.info("邮件发送成功");

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot整合JavaMail通过阿里云企业邮箱发送邮件的实现

    JavaMail是Java开发中邮件处理的开源类库,支持常用协议如:SMTP.POP3.IMAP 一.SpringBoot整合 1.需要在pom文件中添加依赖spring-boot-starter-mail <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependenc

  • Spring框架JavaMailSender发送邮件工具类详解

    本文实例为大家分享了Spring框架JavaMailSender发送邮件工具类,供大家参考,具体内容如下 需要用到的jar包: 下面是发送工具类代码: package com.test.email; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.Jav

  • JavaWeb中使用JavaMail实现发送邮件功能实例详解

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能,用户注册成功之后,就将用户的注册信息以Email的形式发送到用户的注册邮箱当中,实现发送邮件功能就得借助于JavaMail了. 一.搭建开发环境 1.1.创建Web项目 1.2.用户注册的Jsp页面 register.jsp <%@ page language="java" pag

  • Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)

    快速入门 在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 如其他自动化配置模块一样,在完成了依赖引入之后,只需要在applicatio

  • 基于java使用JavaMail发送邮件

    一.邮件的相关概念 邮件协议.主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Protocol 3,即邮局协议的第三个版本,用于接收邮件 IMAP协议:Internet Message Access Protocol,即互联网消息访问协议,是POP3的替代协议 --------------------------------------------------------------

  • 基于SSM框架+Javamail发送邮件的代码实例

    本篇介绍基于SSM框架(Spring4.0+SpringMVC+Mybatis)组合的Javamail应用,邮箱的话基于腾讯的QQ邮箱,其实也是Foxmail邮箱 先要了解一下SMTP协议和SSL加密 SMTP:称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效.可靠的邮件传输.SMTP是一种请求响应的协议,也就是客户机向远程服务器发送请求,服务器响应,监听端口是25,所以其工作模式有两种:发送SMTP,接收SMTP. SSL加密:用来保障浏

  • JavaWeb中JavaMail创建邮件和发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 --用于指明发件人 to字段     --用于指明收件人 subject字段  --用于说明邮件主题 cc字段    -- 抄送,将邮件发送给收件人的同时抄送给另一个收件人,收件人可以看到邮件抄送给了谁 bcc字段 -- 密送,将邮件发送给收件人的同时将邮件秘密发送给另一个收件人,收件人无法看到邮

  • SpringBoot JavaMailSender发送邮件功能

    本文实例为大家分享了SpringBoot JavaMailSender发送邮件的具体代码,供大家参考,具体内容如下 引入Maven依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 163邮箱 application.properties

  • 使用JavaMail发送邮件保证成功的方法

    前言 相信大家应该都知道,一般的开放的api给我们调用都会有个返回值或者状态码,来告诉我们执行成功与否.但是JavaMail却没有提供这样一个返回值. 所以在调用JavaMail发送邮件的时候,我们只能通过catch异常的方式来判断邮件是否发送成功.我们认为只要没有异常发生,那么邮件就能发送成功.那么我们就来分析一下JavaMail为什么没有提供返回值,和通过异常判断邮件发送成功状态是否靠谱. JavaMail发送邮件原理 在使用JavaMail进行发送邮件时,我们必须提供一个邮件会话.创建邮件

  • Java基于JavaMail实现向QQ邮箱发送邮件

    最近项目在做新闻爬虫,想实现这个功能:爬虫某个页面失败后,把这个页面的 url 发到邮箱.最终实现的效果图如下,后期可以加上过滤标签.失败状态码等,方便分类搜索异常. 开发人员可以根据邮件里的 url 和堆栈信息,分析爬虫失败的原因. 是不是服务器 down 了? 还是爬虫的 Dom 解析没有解析到内容? 还是正则表达式对于这个页面不适用? 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 SMTP 服务 注意开启完之后,QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原

随机推荐