通过 JavaMail 发送到 Gmail 时的 TLS 问题

2024-04-23

事实证明,JavaMail 比我想象的要令人沮丧一些。我在网上查看了几个有关如何通过 Gmail 服务器(但不通过 SSL)发送简单 SMTP 电子邮件的示例。在尝试了几个不同的代码示例之后,当我调用时,我不断得出相同的示例异常transport.connect()。我不断收到这个堆栈跟踪:

Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. l10sm302158wfk.21
     at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
     at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
     at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
     at SendEmail.main(SendEmail.java:47)

有人可以告诉我应该添加什么或做什么来解决这个问题吗?

这是我的代码:

    Properties props = new Properties();
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.host", "smtp.gmail.com");
    props.put("mail.user", "[email protected] /cdn-cgi/l/email-protection");
    props.put("mail.password", "blah");
    props.put("mail.port", "587");

    Session mailSession = Session.getDefaultInstance(props, null);
    Transport transport = mailSession.getTransport();

    MimeMessage message = new MimeMessage(mailSession);
    message.setSubject("This is a test");
    message.setContent("This is a test", "text/plain");
    message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected] /cdn-cgi/l/email-protection"));

    transport.connect();
    transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
    transport.close();

您需要启用STARTTLS。在您的配置中再添加一项属性:

props.put("mail.smtp.starttls.enable", "true");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 JavaMail 发送到 Gmail 时的 TLS 问题 的相关文章

  • Spring Security 自定义身份验证 - AuthenticationProvider 与 UserDetailsS​​ervice

    据我所知 当您想要在 Spring Security 中进行自定义身份验证时 您可以实现自定义AuthenticationProvider或定制UserDetailsService Autowired public void configu
  • string.split("(?!^)") 解释

    我正在尝试将字符串的字符拆分为字符串数组 我找到了解决方案here https stackoverflow com questions 5235401 split string into array of character strings
  • Java 7u51/7u55 带星号的清单变量

    我正在部署一个小程序 其中包含清单中的下一个变量 Manifest Version 2 0 Ant Version Apache Ant 1 8 2 Trusted Library true Permissions all permissi
  • Java中的字节和字符转换

    如果我将一个字符转换为byte然后回到char 那个角色神秘地消失了 变成了别的东西 这怎么可能 这是代码 char a line 1 byte b byte a line 2 char c char b line 3 System out
  • java中%%是什么意思?

    我是一名 PHP 程序员 想知道这行代码的含义 System out printf exp 3f is 3f n x Math exp x 3f 3f n 和逗号 x 是什么意思 它与C类似printf http java sun com
  • Android Studio:如果设置项目的背景颜色,ListView OnClick 动画将不起作用

    在我的项目中 我在 ListView 内设置了项目 由插入 ConstraintLayout 中的多个元素组成 的背景颜色 但如果背景颜色不是至少一点透明 则单击和长按的默认动画会消失 事实上 随着透明度的降低 点击元素的效果越来越不明显
  • Java:从 ScriptEngine javascript 返回一个对象

    我正在尝试使用 Java 来评估 javascript脚本引擎 https docs oracle com javase 7 docs api javax script ScriptEngine html班级 这是我正在尝试做的事情的一个简
  • 如何在 PuTTY 中保存并运行 Java 文件?

    我是 AWS 亚马逊网络服务 的新手 所以这可能是一个基本问题 我在 AWS 上创建了一个 EC2 实例 我有一台 Windows 计算机 因此我使用 PUTTY 来连接 Linux 实例 连接到我的 EC2 实例后 我使用以下命令编写 J
  • Java:如果数组大小未知,如何初始化?

    我要求用户输入 1 到 100 之间的一些数字并将它们分配到一个数组中 数组大小未初始化 因为它取决于用户输入数字的次数 我应该如何分配数组长度 如果用户输入 5 6 7 8 9 5 个数字 则 int list becomes int l
  • @Transactional 注解属于哪里?

    如果您将 Transactional in the DAO类和 或其方法 或者注释使用 DAO 对象调用的服务类是否更好 或者注释两个 层 是否有意义 我认为事务属于服务层 它是了解工作单元和用例的人 如果您将多个 DAO 注入到需要在单个
  • Netty Nio java 中的通信

    我想在 Netty nio 中创建一个具有两个客户端和一个服务器的通信系统 更具体地说 首先 我希望当两个客户端与服务器连接时从服务器发送消息 然后能够在两个客户端之间交换数据 我正在使用本示例提供的代码 https github com
  • 从侦听器中修改 JFrame [重复]

    这个问题在这里已经有答案了 可能的重复 如何在框架可见后调用 setUndecorated https stackoverflow com questions 875132 how to call setundecorated after
  • Java/Hibernate - 异常:内部连接池已达到其最大大小,当前没有可用的连接

    我第一次在大学项目中使用 Hibernate 而且我还是个新手 我想我遵循了我的教授和我阅读的一些教程给出的所有指示 但我不断收到标题中的异常 Exception in thread main org hibernate Hibernate
  • 为什么 CompletableFuture 的 thenAccept() 不在主线程上运行

    我在 CompletableFuture 的 SupplyAsync 中处理长时间运行的操作 并将结果放入 thenAccept 中 有时 thenAccept 在主线程上执行 但有时它在工作线程上运行 但我只想在主线程上运行 thenAc
  • 运行 Espresso 测试时在 Android studio 中找不到属性 android:forceQueryable

    我已经使用 android studio 录制了我的 Android 应用程序 Espresso 测试记录浓缩咖啡测试选项中Run菜单 在记录的最后 我用自己的文件名保存了测试 单击保存按钮后 IDE 会自动在以下位置创建文件Android
  • AWS SQS Batch SendMessageBatchRequest 非常慢

    我的应用程序使用 SendMessageBatchRequest 将每个请求发布 10 条消息到 AWS SQS 每条消息的大小小于250字节 该应用程序预计每天发布约一百万条记录 但要实现这一目标 消息发布的速度非常慢 AmazonSQS
  • Java 9:AES-GCM 性能

    我进行了一个简单的测试来测量AES GCM https en wikipedia org wiki Galois Counter Mode表现在Java 9 通过在循环中加密字节缓冲区 结果有些令人困惑 本机 硬件 加速似乎有效 但并非总是
  • 如何使用 jQuery 以编程方式单击 Gmail 中的“显示下面的图像”?

    我正在创建一个 Google Chrome 扩展程序 它使用 jQuery 在 Gmail 中添加了 显示下面的图像 链接的键盘快捷键 我尝试了以下方法来模拟点击 但未成功 canvas frame contents find span c
  • 为什么 OOP 中静态类的最佳实践有所不同?

    我目前正在阅读有关 Java 最佳实践的内容 我发现根据这本书 https rads stackoverflow com amzn click com 0321356683我们必须优先选择静态类而不是非静态类 我记得在 C 最佳实践中 我们
  • Bipush 在 JVM 中如何工作?

    我知道 iload 接受整数 1 到 5 但是如何使用 bipush 指令扩展到更高的数字 特定整数如何与字节码一起存储 有几种不同的指令可用于推送整数常量 最小的是iconst 指令 这些只是一个字节 因为该值是在操作码本身中编码的 ic

随机推荐

  • 为什么访问 PerformanceCounter 会导致第 2 代垃圾回收

    当我从 C 应用程序中访问某些 PerformanceCounters 时 我看到一些奇怪的行为 例如 当我访问 Process Private Bytes 时 似乎我得到了很多第 2 代垃圾收集 对于其他进程计数器来说似乎也是如此 下面的
  • 如何使用短信内容提供商?文档在哪里?

    我希望能够读取系统的短信内容提供商 基本上我想制作一个短信应用程序 但只有当我可以看到过去的线程等时它才会有用 似乎有一个内容提供程序 但我找不到它的文档 有人知道它在哪里吗 Thanks 编辑 好的 我找到了一种获取短信收件箱提供程序的方
  • Node.js:如何将参数的值从终端传递到JS脚本

    Given a jsdom based svgcreator node js脚本文件 var jsdom require jsdom jsdom env CREATE DOM HOOK http d3js org d3 v3 min js
  • 在使用 ant 为库项目构建 Android 测试时,如何使用 emma 过滤器?

    从这个问题 使用 ant 构建 Android 测试时如何使用 emma 过滤器 https stackoverflow com questions 7360972 how can i use filter for emma when bu
  • 谷歌电子表格中的数据绑定?

    是否可以编写一个将两个单元 绑定 在一起的谷歌应用脚 本 例如 如果编辑一张工作表中的单元格 它将自动更新另一张工作表中的匹配单元格 因此 如果sheet1在单元格A1中有一个表示 花费的钱 的值 并且sheet2在单元格B4中有一个表示相
  • 使用 C++ 中的 java 套接字接收浮点数

    我需要使用套接字从 C 客户端到 java 服务器接收包含浮点数的数组或类 但 InputStreamReader 没有得到正确的结果 任何原因 任何有关更简单方法的建议将不胜感激 谢谢 Java服务器代码 public static vo
  • 检测流中的重复组

    我想确保列表中的所有数字都分组在一起 让我用例子来解释这一点 1 1 1 2 2 OK two distinct groups 1 1 2 2 1 1 Bad two groups with 1 1 2 3 4 OK 4 distinct
  • 缩放变换导致与 Flex 布局的渲染间隙

    我使用 Flex 布局来渲染具有 3 个大小均匀的列的容器 div 它的工作原理正如我所期望的那样 直到我应用比例变换 当容器缩小时 内容框之间会出现细小的间隙 该问题发生在 MacOS Chrome 和 Safari 上 但不会发生在 F
  • 使用 ggplot2 对多个梯度进行分组

    我对 R 还很陌生 所以如果答案显而易见 或者我的数据组织得不好 我深表歉意 我试图绘制声音字符 熵 随时间的差异 我使用拍号信息将录音分成 回合 我能够创建一个散点图 其中的线条对应于回合数 0 9 代码看起来像这样 newbout lt
  • DataGrid 格式中的 WPF RichTextBox 混乱

    我需要在 DataGrid 的列中使用 RichTextBox 这是通过 xaml 完成的
  • 如何保留使用 MCV5/OWIN 更新的 cookie 声明

    我们正在开发一个 OWIN MVC5 项目 我们使用自己的实现IUserStore
  • 如何特别为特定模块指定 gcc 标志 (CXXFLAGS)?

    我最近正在构建一个新的 NS3 模块 在我的代码中 我使用了一些新功能C 11 c 0x 我想添加一个gcc标志 CXXFLAGS std c 0x to the waf配置系统 我尝试这样做 CXXFLAGS std c 0x waf c
  • 内联汇编 - cdecl 和准备堆栈

    我最近一直在尝试通过使用缓冲区和不同汇编运算符的原始十六进制等效项来实现 C 中的动态函数 为了说明一个简单的跳转 byte buffer new buffer 5 buffer 0xE9 Hex for jump uint buffer
  • 获取已安装包的描述而不实际导入它

    如果您输入以下内容 import somemodule help somemodule 它将打印出分页的包描述 我需要获得与字符串相同的描述 但不将此包导入到当前命名空间 这可能吗 确实如此 因为在 Python 中一切皆有可能 但是最优雅
  • 实际上什么时候创建闭包?

    以下情况是否会创建闭包foo 但不适合bar Case 1 foo是一个带有仅具有全局作用域的作用域链的闭包 Case 2 与案例1相同 Case 3
  • 当滚动“移动”时,设置控件的位置似乎不起作用(c#,winforms)

    问题描述 创建 自定义控件 将其属性 AutoScroll 设置为 true 将其背景颜色更改为绿色 创建第二个 自定义控件 将其背景颜色更改为红色 在主窗体上放置第一个自定义控件 在代码中创建第二个控件的 20 个实例 Add a but
  • 非转义参数的闭包使用 - Swift 3 问题

    我知道 Swift 3 中的更改 其中 nonescaping 是闭包的默认行为 我已成功更改了有关更改的大部分代码 但我的代码的一部分无法摆脱闭包使用非转义参数可能会导致其转义编译错误 我尝试将 escaping 添加到 updateHa
  • 查找带有 Anaconda cmake 前缀的 boost-python3

    DLDR如何将 cmake 指向 boost python3 库 cmake 不会自动检测到它 我正在尝试建立caffe https github com BVLC caffe对于 Python 3 6 使用提供的 cmake 我的系统规格
  • 如何传递文件名参数 gitconfig diff textconv?

    有关的文档textconv at https git wiki kernel org index php Textconv https git wiki kernel org index php Textconv有简洁的措辞 gitconf
  • 通过 JavaMail 发送到 Gmail 时的 TLS 问题

    事实证明 JavaMail 比我想象的要令人沮丧一些 我在网上查看了几个有关如何通过 Gmail 服务器 但不通过 SSL 发送简单 SMTP 电子邮件的示例 在尝试了几个不同的代码示例之后 当我调用时 我不断得出相同的示例异常transp