使用应用程序特定密码通过 GMail 发送电子邮件

2023-12-14

我维护并开发了一个程序(除其他外)通过 GMail 发送电子邮件。

到目前为止,发送电子邮件没有出现任何问题,但几天前,此功能停止工作,并出现“凭据错误”消息。我查看了 GMail 的帮助,找到了这个解释/警告/你有什么:

为了确保您的帐户安全,从 2022 年 5 月 30 日起,Google 不再支持使用要求您仅使用用户名和密码登录 Google 帐户的第三方应用或设备。

解决方案是使用“应用程序特定”密码。

我在看这个问题其中规定:

我最近的尝试是在 Gmail 上创建“应用程序特定”密码

但所附代码实际上并未显示密码是如何发送的。

阅读问题及其答案,我对我的程序做了一些更改:

Port := 995
UseTLS := utUseImplicitTLS
SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2]

这些更改之后,在尝试发送测试邮件(仍然没有应用程序特定密码)时,我得到了响应

回复代码无效:+OK

这可能意味着我的程序失败,因为它没有发送应用程序特定的密码。

我想知道的是:如何发送该密码?

下面是我作为线程执行的代码,因此所有组件都在代码中定义:

 email:= TIdMessage.Create (nil);
 try
  email.LoadFromFile (FFileName);
  email.OnInitializeISO:= DoInitializeISO;
  //  DeleteFile (FFileName);

  smtp:= TIdSMTP.Create (nil);
  try
   smtp.OnFailedRecipient:= FailedRecipient;
   ssl:= TIdSSLIOHandlerSocketOpenSSL.Create (smtp);
   ssl.SSLOptions.SSLVersions:= [sslvTLSv1];

   smtp.OnStatus := DoStatus;
   smtp.IOHandler:= ssl;
   smtp.Host:= FHost;
   smtp.Password:= FPassword;   // now app passord
   smtp.Username:= FUsername;
   smtp.UseTLS:= utUseExplicitTLS;
   smtp.Port:= 587;

   smtp.Connect;
   try
    smtp.Send (email);
   finally
    smtp.Disconnect;
   end;
  finally
   ssl.free;
   smtp.Free;
  end;
 finally
  email.Free;
 end;

应用程序专用密码只是 Gmail 为您生成的密码,然后您可以使用它来代替普通密码(即,在TIdSMTP.Password财产)。 Gmail 的文档对此进行了解释:

使用应用程序密码登录

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

使用应用程序特定密码通过 GMail 发送电子邮件 的相关文章

  • Delphi XE4 中是否可以更改应用程序短标题而不使其与项目 dpr 名称相同?

    我正在编写我的第一个由 delphi 驱动的 iPhone 应用程序 我已经创建了它 但我希望将其命名为 dpr 文件名称以外的名称 因为 dpr 文件不能包含空格 例如 EXE 名称并不总是与人们可能分配给应用程序的人类可读名称相同 而在
  • 面向 Delphi 开发人员的 Qt

    有人知道为 Delphi C Builder VCL 开发人员解释 Qt 的书籍或教程吗 对于具有该背景的开发人员来说 学习 Qt 的最佳方法是什么 我对如何使用 Qt 完成我知道如何在 Delphi 中完成的事情特别感兴趣 例如 Qt 相
  • Delphi 应用程序被 Google Chrome 视为“危险”

    我经常用Delphi 2009制作数学软件 并将其发布在我的网站上 然而 去年左右 Google Chrome 开始认为我的一小部分 但数量不断增加 EXE 是 有害的 并且 Google Chrome 拒绝下载它们 例如 今天我编写了一个
  • 如何从窗体单元外部访问delphi控件?

    我试图从如下定义的过程中调用计时器的 Enabled 属性 procedure Slide Form TForm Show Boolean 并且没有固定的形式名称 例如 Form2 Timer 将表单的单位放入使用列表后 这可以工作 For
  • 我可以在 Delphi 中使用字符串“IsEmpty”方法吗

    内河码头文件 IsEmpty 方法 http docs embarcadero com products rad studio delphiAndcpp2009 HelpUpdate2 EN html delphivclwin32 Syst
  • Delphi 是否在构造对象之前分配变量?

    Delphi 是否在对象完全构造之前分配实例变量 换句话说 给定一个变量 var customer TCustomer nil 然后我们构造一个客户并将其分配给变量 customer TCustomer Create 有没有可能custom
  • 什么是代码页 0?

    我正在使用Delphi函数 StringCodePage 我在 COM 函数 Acrobat Annotation getContents 请参阅我的其他帖子 返回的字符串上调用它 它返回 0 0是什么 安西 代码页 0 是 CP ACP
  • 如何将 Delphi Chromium Embedded (TChromium) 组件的声音静音?

    我需要将某个声音静音TChromium组件来制作无声浏览器 主要问题是在 Windows XP 上 当我将浏览器的声音静音时 它会静音整个系统的声音 有没有办法让电脑静音TChromium成分 我已经成功使用以下代码 procedure C
  • 在该对象调用的事件期间销毁该对象

    我有一个按钮 它的 OnClick 事件调用一个销毁按钮的过程 但随后 线程 想要返回到 OnClick 事件 并且我遇到了访问冲突 我完全被难住了 您需要在按钮的所有代码执行完毕后销毁该按钮 执行此操作的标准方法是将用户定义的消息发布到表
  • SSL 错误 1409442E 使用 TIdHTTP 通过 HTTPS 下载文件 [重复]

    这个问题在这里已经有答案了 我正在使用德尔福10 3 3 下面的代码曾经有效 但现在尝试通过 HTTPS 下载文件时遇到错误 连接 SSL 错误错误 1409442E SSL 例程 SSL3 READ BYTES tlsv1 警报协议版本
  • 当我尝试转发电子邮件时,时事通讯无法隐藏 Gmail 上的响应内容

    我正在尝试写一份时事通讯 但当我测试时 我无法隐藏响应式内容GMail On Outlook and Yahoo一切正常 但如果我尝试转发电子邮件 隐藏的内容就会可见 我测试使用 putsmail https putsmail com gt
  • Delphi XE 和 OmniXML:使用 SelectNode()?

    我将以下 XML 片段作为一个更大的 XML 文件的一部分 我正在使用最新的 OmniXML 快照进行处理
  • 有没有其他方法可以在delphi上观看youtube视频?

    我看到http www delphiflash com demo youtube video http www delphiflash com demo youtube video关于如何在 delphi 上加载 flash 视频 但它不是
  • 如何使用 VCL 类的接口 - 第 2 部分 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 继续我之前关于使用 VCL 接口的调
  • 如何为 Gmail 开发 Chrome 扩展程序?

    我正在考虑为 Gmail 开发 Chrome 扩展程序 我想知道当前的最佳实践是什么 例如 默认情况下为每封电子邮件附加 GPG 签名 添加一个额外的按钮来执行某些操作 我已经有了 发送电子邮件并提示我完成某些操作的劫持操作 只是这些例子帮
  • 为什么变量被声明为 TStrings 并被创建为 TStringList?

    为什么变量声明为TStrings并创建为TStringList 例如 varsl被声明为TStrings但创建为TStringList var sl TStrings begin sl TStringList Create add stri
  • 如何在显示表单之前强制将焦点集中在组件上

    我必须展示 与ShowModal 一个有很多的表格TEdit但我想把注意力集中在TEdit 但并不总是相同 具体取决于上下文 我不能使用SetFocus之前ShowModal 因为表单未激活 并使用该组件Name or Tag在我的应用程序
  • IMAP x Gmail => 标签?

    有没有从 imap 连接获取 Gmail 标签 甚至过滤器 的经验 找不到线索 谢谢您提供有关它的任何信息 或者 如果您以编程方式使用 IMAP 则可以使用 gmail imap 扩展来访问此信息 http code google com
  • Delphi 2010 控制闪烁

    我一直在从 XP 操作系统升级或迁移我们的软件 以便能够在 Windows 7 下编译和运行 我们的软件开始出现我们在 Windows XP 下没有注意到的问题 目前 我正在处理 TForm 上闪烁的用户定义控件 它似乎时不时地闪烁 但并非
  • 在 Delphi 中,我的 DLL 中是否必须分配函数的返回 pchar

    我有一个 DLL 其中有一个返回 pchar 的函数 以避免必须使用 borlndmm 我最初所做的是将字符串转换为 pchar 并返回 Result pChar SomeFuncThatReturnsString 但 90 的情况下我都能

随机推荐

  • 适用于 Android 的 Firebase 数据库 - 使用持久性在离线时写入事件

    如标题所述 我正在使用 Firebase 实时数据库 启用持久性 正如指南中所述 通过启用持久性 Firebase 实时数据库客户端在联机时同步的任何数据都会持久保存到磁盘 并且即使在用户或操作系统重新启动应用程序时也可以脱机使用 这意味着
  • ORA-14551: 无法在查询内执行 DML 操作

    我有以下内容package它给了我一个错误 ORA 14551 cannot perform a DML operation inside a query Code is DECLARE CURSOR F IS SELECT ROLE ID
  • 无法使用 NSPopover 禁用背景模糊

    在 10 10 中运行时 我没有运气尝试让 NSPopover 恢复到 10 9 的外观 我有一个弹出窗口 它附加到用户拖动的 NSView 上 弹出窗口must是透明的 这样用户仍然可以看到下面其他 UI 元素的位置 在 10 9 下一切
  • 如何停止在 Netbeans 中启动的 Maven 项目

    我在 NetBeans 中有一个项目 它以一个带有参数的 main 函数开始 当我点击 停止 按钮时 项目继续运行 但不再有输出 目前我必须记住从控制台手动停止该进程 如何修改我的项目 maven 设置或 NetBeans 配置以使进程在我
  • R - 我想遍历一个大矩阵的行并删除所有零

    我在一个非常大的矩阵 184 x 4000 类型 double 中有很多行和列 我想删除所有 0 矩阵中的值通常大于 0 但也有一些行为 0 0000 我尝试使用以下方法删除带零的行 x lt x which rowSums x gt 0
  • 如何使用 Spring Data 调用存储过程来选择实体

    假设我有一个 MySQL 存储过程 其中包含以下选择 select from users 如何使用 Procedure中的注释JpaRepository这样我就能得到结果 就像是 public UserRepository extenda
  • 如何获取触摸时的像素颜色?

    我知道这是一个常见问题 并且这个问题有很多答案 我用过一些这个 虽然很多都是一样的 但对我来说可悲的是 他们都不适合我 我到目前为止使用过以下代码 void getRGBAsFromImage UIImage image atX int x
  • 比较 Objective-C 中的浮点数的奇怪问题

    在算法中的某个时刻 我需要将类的属性的浮点值与浮点进行比较 所以我这样做 if self scroller currentValue lt 0 1 其中 currentValue 是浮点属性 然而 当我拥有平等和self scroller
  • Javascript - 对 div 集合进行排序

    我正在尝试单独学习 Javascript 所以请不要推荐库或 jQuery 我有一个 div 列表 我希望用户能够按它们的值对它们进行排序 例如
  • WPF 多线程进度对话框

    Updated这是我遇到的一个有趣的问题 我需要在后台进程运行时显示进度对话框 通常 这可行 但问题是我需要在后台进程中设置公共静态数据 这是我试图完成的示例 public partial class MainWindow Window p
  • 动态生成多口味配置的包名

    我有 Gradle Android 项目 将供多个客户使用 它还将有免费和付费版本 我意识到它可以通过使用flavorDimensions来实现 但问题是我想要一种根据所选口味生成包名称的方法 flavorDimensions brandi
  • ROW_NUMBER() 的打开 SQL 等效项

    是否有等效的ROW NUMBER ABAP程序的函数 该函数在SQL中的使用如下 SELECT ROW NUMBER OVER ORDER BY SomeField AS Row FROM SomeTable 它应该返回行号作为结果行中的第
  • Weblogic 中的 JSTL 支持

    我尝试使用 Weblogic 开始使用 Java EE 但我无法使 JSTL 标签工作 在最简单的代码中 我在部署应用程序时遇到以下错误 index jsp 1 4 没有标签库可以 通过此 URI 找到 可能的原因 可能是 URI 不正确
  • 将带有查找的循环展平为单个 linq 表达式

    In LINQ to Entities 中的类型成员支持 我试图声明一个要在 LINQ 中查询的类属性 但遇到了一些问题 在这里 我将列出实现中的代码 希望对将其转换为查询有所帮助 我有课Quiz其中包含一个集合Questions 其中每一
  • 在 VSTS 中构建项目不会构建解决方案中的所有项目

    我遇到一个奇怪的问题 当我使用 Visual Studio Build 创建构建并提供 sln 文件时 它假装构建所有项目 我在日志中看到这一点 但是当涉及到发布工件时 只有解决方案中的一些项目 主要是测试项目和一些杂项项目 但不是主要项目
  • 是否“分块”推送到远程 Git 存储库?

    我们想要将 20 00 提交的本地 Git 存储库推送到 GitHub 但事实证明 虽然传输本身没有问题 但 GitHub 实际上一次不会处理超过 1000 个提交 处理 意味着它们将链接提交 问题等 因此 为了能够正确传输此存储库并对其进
  • 连接两个数字位的代码不起作用

    任务是连接 2 个给定数字的二进制 Example Given 5 101 and 3 011 结果是46 concat 101 011 101011 到目前为止的代码 public class Concat public static v
  • 我可以在执行读写的两个线程之间共享 boost::asio::tcp::socket 对象吗

    我有两个线程 一个通过 TCP 套接字发送数据 另一个接收数据 我用boost asio read and boost asio write 用于阅读和写作 我的问题是我是否必须在读写操作期间保护对套接字对象的访问 另一种情况是 如果我有两
  • 如何在另一种方法中使用一种方法的变量?

    我想知道如何使用该变量a i j 在方法中Scores 在方法中使用它MD and sumD 在下面的代码中 在我的代码中 方法MD and sumD 无法得到结果 public class Test3 public void Scores
  • 使用应用程序特定密码通过 GMail 发送电子邮件

    我维护并开发了一个程序 除其他外 通过 GMail 发送电子邮件 到目前为止 发送电子邮件没有出现任何问题 但几天前 此功能停止工作 并出现 凭据错误 消息 我查看了 GMail 的帮助 找到了这个解释 警告 你有什么 为了确保您的帐户安全