通过Java和Spring Boot应用程序将Gmail用作SMTP服务器

Gmail用户可以使用Gmail的SMTP服务器smtp.gmail.com从其Spring Boot应用程序发送电子邮件。 为此,让我们在应用程序中进行一些设置:

  1. application.properties文件中提供SMTP连接属性:
    spring.mail.host=smtp.gmail.com
    spring.mail.username=<your gmail/google app email>
    spring.mail.password=*****
    spring.mail.port=587
    spring.mail.properties.mail.smtp.starttls.enable=true
    spring.mail.properties.mail.smtp.auth=true
    spring.mail.properties.mail.smtp.starttls.required=true
  2. 使用Spring Boot Email工具库–它是Spring Boot Email入门库的包装。 在pom.xml中添加以下内容:
    <dependency><groupId>it.ozimov</groupId><artifactId>spring-boot-email-core</artifactId><version>0.6.3</version>
    </dependency>
  3. 注释你的应用程序的主类(@SpringBootApplication注解,即类)与@EnableEmailTools:
    @SpringBootApplication
    @EnableEmailTools
    public class EmailApplication {public static void main(String[] args){SpringApplication.run(EmailApplication.class, args);}
    }
  4. 让我们编写一个使用它的测试。ozimov.springboot.mail.service.EmailService bean发送电子邮件:
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class EmailServiceTest {@Autowired it.ozimov.springboot.mail.service.EmailService emailService; @Value("${spring.mail.username}") String fromEmail; @Test public void testSendEmail() throws UnsupportedEncodingException { User user = new User(); user.setEmail("sanaulla123@gmail.com"); user.setDisplayName("Mohamed Sanaulla"); final Email email = DefaultEmail.builder() .from(new InternetAddress(fromEmail, "From Name")).to(Lists.newArrayList(new InternetAddress(user.getEmail(), user.getDisplayName()))) .subject("Testing email").body("Testing body ...").encoding("UTF-8").build();emailService.send(email); }
    }

如果一切顺利,您应该在收件箱中收到一封电子邮件。

但是,当我尝试上述代码时,一切都不好,并且我遇到的问题是以下异常:

Caused by: javax.mail.AuthenticationFailedException: 534-5.7.14 
<https://accounts.google.com/signin/continue?sarp=1≻c=1&plt=AKgnsbs2
534-5.7.14 tEY84q9p029iw1YKFy_d8O1vYNwHLixZUNHZlZbIqZki9a-EBfcUTPIenD2i6pN704O_7S
534-5.7.14 DK4FC-8-l1K1gU537F4UxjN4v4_txZ5pqxEA8ATwDhmOBzvxAYApfJTQjHL1yhHouwbhGO
534-5.7.14 LhOzSAB6Va6u-enaDfcv73dEgv1TT4b19dBfgzIkOoz_7nJ3i-LwWxZqIRyxOEnu8iNIYQ
534-5.7.14 iV27v9s4HFOrpSOJNGufv1Hg0wU5s> Please log in via your web browser and
534-5.7.14 then try again.
534-5.7.14 Learn more at
534 5.7.14 https://support.google.com/mail/answer/78754 q6sm2366693pgp.58 - gsmtp

发生此错误的原因是,我的Gmail / G Suite电子邮件(即使用自定义域的电子邮件)未配置为允许从安全性较低的应用(例如我们的应用)发送电子邮件。 为此,您需要访问:https://www.google.com/settings/security/lesssecureapps并启用“ 允许安全程度较低的应用程序 ”切换,如下所示:

有时,当您访问不太安全的应用程序链接时,会看到如下所示的内容:

在这种情况下,您可能正在使用G Suite,并且需要管理员启用“安全性较低的应用程序”功能,这可以通过执行以下步骤来完成:

  1. 导航到http://google.com/a/ <域名>
  2. 从菜单中导航到“安全性”设置,如下图所示:
  3. 在安全设置页面上单击“ 基本设置 ”,如下所示:
  4. 在“基本设置”页面上,找到“ 安全性较低的应用程序”部分,然后单击“ 转到安全性较低的应用程序的设置 ”,如下所示:
  5. 现在,在“不太安全的应用程序”页面上,可以使用以下选项:
    选择“ 允许用户管理对不太安全的应用程序的访问 ”,然后单击页面底部可用的“ 保存”按钮。 这将允许单个用户控制来自不太安全的应用程序对其电子邮件的访问。

现在,浏览至https://www.google.com/settings/security/lesssecureapps页面,现在您将能够看到用于更新“ 允许安全性较低的应用程序 ”选项的切换开关。

翻译自: https://www.javacodegeeks.com/2017/09/using-gmail-smtp-server-java-spring-boot-apps.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面向对象类似atm的题_Java面向对象练习题之银行存取款

编写Java应用程序。首先定义一个描述银行账户的Blank类&#xff0c;包括成员变量“账号”和“存款余额”&#xff0c;成员方法有“存款”、“取款”和“余额查询”。其次&#xff0c;编写一个主类&#xff0c;在主类中测试Blank类的功能。String ZhangHao;double YuE;Blank(Str…

mongodb如何写入图片_CTO之瞳-数据库-MongoDB

MongoDB&#xff0c;常用的NoSql数据库&#xff0c;在https://db-engines.com/en/ranking 里被分类为文档型数据库。​本文从以下五个方面来了解MongoDB (和上一篇一样&#xff0c;基础操作请查询官方文档或者菜鸟教程&#xff09;使用场景存储引擎性能测试索引-B树分片与复制1…

小波滤波器与其他滤波器的区别_滤波器国产 VS 国外

一、滤波器技术及产品类型详细分析几次技术应用的潮流引领了声波射频滤波器技术的发展&#xff0c;而SAW滤波器可以说是军用转民用的技术典范。早期国内的SAW滤波器仅用于国防如雷达、通信等方面需求&#xff1b;而该技术的第一次民用&#xff0c;即用于彩电产业&#xff0c;带…

Unix/Linux/BSD 它们之间的关系以及各自派系的介绍

文章目录一、Unix 是什么二、Unix 派系&#xff08;一&#xff09;BSD 分支1.BSD 是什么2.由 BSD 衍生的闭源 Unix 版本3.由 BSD 衍生的开源 Unix 版本&#xff08;二&#xff09;System V 分支1.System V 是什么2.System V 与 BSD 的版权纠纷&#xff0c;以及 UnixWare 的由来…

arraylist获取前多少位_Java 面试题 :百度前 200 页都在这里

作者&#xff1a;唐尤华&#xff0c;基本概念操作系统中 heap 和 stack 的区别什么是基于注解的切面实现什么是 对象/关系 映射集成模块什么是 Java 的反射机制什么是 ACIDBS与CS的联系与区别Cookie 和 Session的区别fail-fast 与 fail-safe 机制有什么区别get 和 post请求的区…

航空订票系统界面java_Java命令行界面(第21部分):航空公司2

航空订票系统界面java本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库。 Airline 2的GitHub项目页面描述了该库&#xff0c;“ Airline是一个Java库&#xff0c;提供了基于注释的框架来解析命令行界面。” 该页面进入状态&#xff1a;航空公司“同时支持…

python爬虫数据_python爬取数据分析

一.python爬虫使用的模块 1.import requests 2.from bs4 import BeautifulSoup 3.pandas 数据分析高级接口模块 二. 爬取数据在第一个请求中时, 使用BeautifulSoupimport requests # 引用requests库 from bs4 import BeautifulSoup # 引用BeautifulSoup库 res_movies requests…

java 迁移数据_Java 9迁移指南:七个最常见的挑战

java 迁移数据我敢肯定&#xff0c;您已经听说过更新到Java 9并不是一件容易的事&#xff0c;甚至可能是不兼容的更新&#xff0c;而且对于大型代码库而言&#xff0c;迁移毫无意义。 这样做之后&#xff0c;我迁移了一个相当大的旧代码库&#xff0c;我可以告诉你&#xff0c;…

markdown java 代码高亮_MarkdownPad2使用代码高亮插件

MarkdownPad 2有插入代码块的功能&#xff0c;但样式却不尽人意&#xff0c;但又不想换个编辑器&#xff0c;找了挺多相关资料&#xff0c;最后在MarkdownPad 2集成prettify高亮插件。如下相关资料&#xff1a;你可以下载后引用&#xff0c;也可以直接引用bootcdn。具体步骤&am…

需求调研 现有系统梳理_对速度的需求,访问现有数据的速度提高了1000倍

需求调研 现有系统梳理了解如何通过使用标准Java 8流和Speedment的In-JVM-Memory加速器将分析数据库应用程序加速1000倍。 Web和移动应用程序有时会很慢&#xff0c;因为后备数据库很慢和/或与数据库的连接施加了延迟。 现代的UI和交互式应用程序需要快速后端&#xff0c;并且…

order by 影响效率么_提升开发效率N倍的20+命令行神器

图 by&#xff1a;石头青海湖关于作者&#xff1a;程序猿石头(ID: tangleithu)&#xff0c;现任阿里巴巴技术专家&#xff0c;清华学渣&#xff0c;前大疆后端 Leader。以每篇文章都让人有收获为目的&#xff0c;欢迎关注&#xff0c;交流和指导&#xff01;背景本文主要来源于…

超级酒吧女生Java下载_超真实分享:一个人去酒吧的经验+注意事项

原标题&#xff1a;超真实分享&#xff1a;一个人去酒吧的经验&#xff0b;注意事项今天想跟大家分享我自己一个很奇妙也很特别的经验&#xff0c;就是关于我自己一个人去酒吧喝酒的故事&#xff5e;对这个故事有好奇心的女孩欢迎跟我一起聊聊&#xff5e;我的个性很独立而且蛮…

java parse_Java命令行界面(第9部分):parse-cmd

java parseparse-cmd库由单个类ParseCmd.java组成&#xff0c;该类是“用于在Java应用程序中定义和解析命令行参数的Java类。” 该库托管在Google Code存档上 &#xff0c;因此可以随时关闭 。 该JAR似乎也可以在GitHub上使用 。 这篇文章介绍了如何使用parse-cmd 0.0.93处理Ja…

mysql 聚簇索引和非聚簇索引_MySQL学习之——索引

转自&#xff1a;CSDNMySQL是目前绝大多数互联网公司使用的关系型数据库&#xff0c;它性能出色、资源丰富、成本低廉&#xff0c;是快速搭建互联网应用的首选关系型数据库。但是&#xff0c;俗话说&#xff0c;“好马配好鞍”&#xff0c;仅仅会使用MySQL是不够的&#xff0c;…

java登录界面命令_Java命令行界面(第10部分):picocli

java登录界面命令picocli主页面将picocli描述为“强大的微小命令行界面”&#xff0c;“ picocli”是一个单文件Java框架&#xff0c;用于解析命令行参数并生成精美&#xff0c;易于定制的用法帮助消息。 有颜色。” 这篇文章简要概述了如何使用Picocli 0.9.7处理Java代码中的命…

navicat运行sql文件慢_SQL进阶之路——入门

一、初步了解SQL数据库&#xff1a;用来存放数据关系数据库&#xff1a;1.含有多张表 2.各表之间有关系关系数据库中表的样式&#xff1a;a.每个表1个表名 b.每个表中包含记录列名的列和记录数据的行 c.利用主键用来标识数据的唯一性关系数据库中每个表之间如何建立联系&#x…

java登录界面命令_Java命令行界面(第19部分):jClap

java登录界面命令本系列中第19个帖子的重点是从Java代码解析命令行参数是jClap &#xff08; Java命令行参数解析器 &#xff09;&#xff0c;不应与JCLAP库混淆&#xff0c;该库是我本系列前 一篇文章的重点。 上 一篇 文章介绍了Giles Winstanley&#xff08; snaq.net &…

weka分类器怎么设置样本类别_【程序喵笔记】小样本学习1.0

小样本学习前几天接触小样本学习 Few-Shot Learning&#xff0c;感觉很是有意思。看到Shusen Wang老师的讲解&#xff0c;感觉很棒~持续学习~学会学习 Lean to learn小朋友去动物园&#xff0c;见到未知的动物&#xff0c;他虽然不知道类别&#xff0c;但是给他看一些卡片&…

maven 生成本地库_在2017年从Maven工件生成P2存储库

maven 生成本地库几年前&#xff0c;我写了一篇博客文章&#xff0c;介绍如何基于Maven工件生成P2存储库。 如今&#xff0c;这种描述的方法已经过时了&#xff0c;我想展示一种基于p2-maven-plugin的新方法&#xff0c;该方法是为解决此问题而创建的。 Maven构建生命周期中的…

java 状态模式 同步_JAVA设计模式之状态模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述状态(State)模式的&#xff1a;状态模式&#xff0c;又称状态对象模式(Pattern of Objects for States)&#xff0c;状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改…