通过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/349078.shtml

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

相关文章

在建工地扬尘在线监控系统推荐_配电室为何需要安装蓄电池在线监控系统?保定钰鑫电气...

配电室蓄电池在线监控系统提高了蓄电池运行质量、增强了电力系统的安全运行、保障蓄电池运行环境的可靠&#xff0c;打造无人值守配电室、智能化运维模式&#xff0c;减少蓄电池损耗、浪费&#xff0c;降低了维护成本&#xff0c;为何需要安装一套配电室蓄电池在线监测系统&…

最好的Java开发人员测试和集成工具

通过从应用程序中学习企业APM产品&#xff0c;发现更快&#xff0c;更高效的性能监控。 参加AppDynamics APM导览&#xff01; 无论您是刚开始还是已经使用了一段时间&#xff0c;使用正确的工具进行编程都可以对项目的成功产生巨大的影响。 适当的工具使您可以编写更好的代码…

最速下降法matlab全局最小值_梯度下降概念

1、梯度概念(1)从几何意义上讲&#xff0c;就是函数变化最快的地方。在单变量的函数中&#xff0c;梯度只是导数&#xff0c;其实就是函数在某个给定点的切线的斜率&#xff1b;在多变量函数中&#xff0c;梯度是一个向量&#xff0c;向量有方向&#xff0c;梯度的方向就指出了…

IntelliJ中的远程调试Wildfly应用程序

远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序。 Java开箱即-agentlib:jdwp[options]支持远程调试&#xff1a;目标应用程序必须使用-agentlib:jdwp[options]选项执行&#xff0c; -agentlib:jdwp[options]选项加​​载Java调试线协议&#xff08;jdwp&…

+h eclipse中ctrl_Eclipse 常用的快捷键都有哪些?

今天&#xff0c;小编大概整理了 几 组 Eclipse 的快捷键&#xff0c;希望对你有帮助。1、打开资源CTRL SHIFT R&#xff1a;打开所有类型文件&#xff0c;不包括 JAR 包&#xff1b; CTRL SHIFT T&#xff1a;打开 Java 类型文件&#xff0c;包括 JAR 包&#xff1b;2、查…

apache.camel_Apache Camel 2.11发布

apache.camel上周Apache Camel 2.11发布了。 这篇博客文章总结了最引人注目的新功能和改进。 有关详细说明&#xff0c;请参见Camel 2.11发行说明 。 1&#xff09;新组件 与往常一样&#xff0c;每个新版本都包含许多新组件&#xff0c;这些组件是由我们庞大的用户群贡献的。…

c向文件中插入数据_Redis从文件中批量插入数据

简介在redis中&#xff0c;有时候需要批量执行某些命令&#xff0c;但是在redis的redis-cli下&#xff0c;只能一条条的执行指令&#xff0c;实在太麻烦了&#xff01;想到这&#xff0c;你是不是蓝瘦香菇&#xff1f; 如果能将要执行的指令一行行存储到文件中&#xff0c;然后…

python多级目录import_你真的会用Python模块与工具包吗?

在开发过程中&#xff0c;我们无法把所有代码、资源都放在同一个文件中。因此&#xff0c;模块导入在编码中是很常见的。无论是C、Java&#xff0c;还是Python、Go。可以把不同功能、不同模块进行分离&#xff0c;当使用的时候&#xff0c;可以通过import关键字在一个模块中使用…

八边形点坐标数的lisp_图形学入门第五课:齐次坐标

齐次坐标(Homegeneous Coordinates)在学习齐次坐标之前&#xff0c;我们要先好奇的问一下&#xff0c;为什么要学习齐次坐标。上一节课&#xff0c;我们学习了变换的三种基本形式&#xff1a;旋转&#xff0c;缩放&#xff0c;和切变。但是还有一种特殊的变换&#xff1a;Trans…

对速度的需求,访问现有数据的速度提高了1000倍

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

mysqls压力测试怎么用_用 Swagger 测试接口,怎么在请求头中携带 Token?

松哥周末抽空给 Spring Security 系列也录制了一套视频&#xff0c;目录如下&#xff1a;感兴趣的小伙伴戳这里-->Spring BootVue微人事视频教程今天的话题来自一个小伙伴在微信上的提问&#xff1a;看到这个问题&#xff0c;松哥忽然想到我自己之前写过 Spring BootSwagger…

安卓手机背景变黑色怎么改_别着急扔掉旧手机 你的电脑可能需要它

PC玩家中&#xff0c;不少人都会有在玩游戏时观测电脑硬件状态的习惯。比如查看游戏帧数、CPU频率、GPU频率或是温度等。大多数人都是通过第三方软件&#xff0c;在游戏内把监测数据显示到电脑显示屏角落。可就算是在角落&#xff0c;这些数据依旧会阻挡游戏画面&#xff0c;在…

JDeps入门–分析项目的依赖关系

JDeps是Java依赖关系分析工具 &#xff0c;这是一个命令行工具&#xff0c;它处理Java字节码&#xff08;意味着.class文件或包含它们的JAR&#xff09;&#xff0c;并分析类之间静态声明的依赖关系。 可以用各种方式过滤结果&#xff0c;并可以将其汇总到包或JAR级别。 JDeps还…

禅道开源版用户手册_Docker搭建开源版禅道以及项目基本流程介绍

对于自学软件测试的同学来说&#xff0c;经常会遇到这样的困惑&#xff1a;测试用例怎么写&#xff1f;有啥好的模板&#xff1f;缺陷提交的模板是什么样的&#xff1f;bug的生命周期是啥&#xff1f;项目的流程是啥&#xff1f;以上这些困惑&#xff0c;在你仔细看完这篇文章后…

f12 卡 谷歌浏览器_抢券第二课:利用浏览器F12获取优惠券请求链接

抢券第二课为什么迟迟不来呢&#xff1f;因为最近京东没有那种神券需要定点抢购的&#xff0c;我也没法测试我的理论。现在京东的券随时可以领取到&#xff0c;我多没法测试的东西不想就这样欺骗你们。所以今天的第二课我们讲一讲神奇的谷歌浏览器F1201 工具准备一、浏览器这里…

Java命令行界面(第5部分):JewelCli

细算在Java命令行处理与Apache的百科全书CLI &#xff0c; args4j &#xff0c; jbock和命令行中先前的文章&#xff0c;我把注意力转向在这个岗位使用JewelCli完成的命令行参数相似的处理Java中。 几个Java命令行处理库使用批注来定义命令行选项。 到目前为止&#xff0c;本系…

dnf用虚拟机会被制裁吗_DNF: 神豪奶妈扬言, 战斗力没有超过他的, 都不配被加buff!...

要说到现在的年轻人们的交友方式绝对少不了游戏交友&#xff0c;以前的人们只要不出门那就是与世隔绝&#xff0c;而现在就算是不出门也可以在网络上结交一大帮朋友&#xff0c;游戏就是现在的年轻人们交友最多的地方之一。科技的发展让游戏进入了一个繁荣的春天&#xff0c;不…

什么叫轻量瓷_为什么说陶瓷是华夏文明的徽章?

一、先说何为徽章&#xff1f;徽&#xff0c;最基本的解释是标志、符号&#xff1b;章&#xff0c;基本释义较多&#xff0c;其之一为佩戴在身上的标志&#xff0c;如领章、胸章等。徽章&#xff0c;也就是佩戴在身上用以表示身份、职业或者荣誉的标志。徽章的作用是明确身份、…

Java命令行界面(第10部分):picocli

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

workunit 的指的工作单元是什么_分频器是做什么用的?

由于现在的音箱几乎都采用多单元分频段重放的设计方式&#xff0c;所以必须有一种装置&#xff0c;能够将功放送来的全频带音乐信号按需要划分为高音、低音输出或者高音、中音、低音输出&#xff0c;才能跟相应的喇叭单元连接&#xff0c;分频器就是这样的装置。如果把全频带信…