使用应用程序特定密码通过 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检查ini文件是否存在

    如何检查 INI 文件是否存在 在特定路径和特定名称下 比如这样 if FileExists c yourinifile ini then ShowMessage c yourinifile ini exists
  • Delphi - 如何将通用参数传递给接受 const 参数数组的函数

    我有一个 基类 其中包含一个 函数 该函数接受 const 数组 类型的参数 如下所示 type TBaseClass class TObject public procedure NotifyAll const AParams array
  • Delphi错误数据集未处于插入或编辑模式

    客观的 单击 TRxDBCombo 上的按钮调用搜索框 从搜索框中选择记录时 结果将设置为 TComboEditBox 的字段值 并发布在 TRxMemoryData 数据集中 错误 第二次调用此函数时出现数据集未处于插入或编辑模式 TDB
  • vcl组合框并不总是显示它有焦点

    当我从另一个控件切换到组合框时 它会显示文本周围带有虚线的框 但是当我以编程方式将控件设置为活动状态时 它不会显示相同的焦点指示器 这种行为有解决方法吗 我有德尔福XE6 MCVE unit Unit27 interface uses Wi
  • 如何更新Delphi对象检查器?

    继我最近发布的这个问题之后 组件编辑器可以在多个组件上执行吗 https stackoverflow com questions 14802371 can a component editor be executed on multiple
  • Delphi 7,加载PNG到TImage

    只是想加载 PNG 尝试使用适用于其他格式的 OleGraphic 来使用我的 LoadPic 但在 PNG 上失败 目标是将图像复制到隐藏位图 然后将其屏蔽并复制到可见的工作图像画布 如果 CopyRect 不这样做 请随意提出其他建议
  • Delphi (Indy) TIdTCPClient 在线程中

    在互联网上 我看到通常将 TIdTCPClient 放置在自定义 TThread 后代中 为什么要这样做 有时我也在这样的线程中看到服务器 为什么 干杯 阿德里安 Indy 使用阻塞 I O 最好在线程中处理 这是 Indy 整体设计的核心
  • 在运行时创建 TQReport 元素

    在运行时创建 TQReport 元素 嗯 至少尝试一下 我不知道这份报告中应出现哪些标题或数据 我得到一个代表数据行和列的 TString 的 TList 我在组的带打印事件中植入 创建 指令 并在主数据行带的 OnNeedData 事件中
  • 错误:使用 Microsoft WebService.dll 通过 Delphi7 规范化 XML

    我正在使用 Delphi7 修改旧项目以添加使用证书和签名 经过一番搜索后我发现XML 规范化函数 https learn microsoft com en us previous versions dd815358 v vs 85 但我无
  • 使用 Google App Engine 发送时的 Gmail 发送配额

    Gmail 规定每天 500 个收件人发送电子邮件的配额 如果您通过他们的 POP IMAP 界面发送 则配额仅为每天 100 个收件人 使用 Google 应用引擎在 Gmail 帐户上发送电子邮件的发送配额是多少 它会遵循 POP IM
  • 我可以在“Delphi 2007 for Win32”中使用.NET DLL吗?

    是否可以在 Delphi 2007 for Win32 中使用 NET DLL 我尝试以与 ActiveX 组件相同的方式导入 DLL 但它似乎不起作用 组件菜单 gt 导入组件 gt 导入 NET 程序集 是否可能 如果可以 步骤是什么
  • VCL.位图到 FMX.位图

    我在网上找到了这段代码 但 FMX Bitmap 没有扫描线 是否可以以某种方式将 VCL TBitmap 复制或绘制到 FMX Bitmap IFDEF MSWINDOWS type TBitmap FMX Types TBitmap T
  • 如何在Delphi XE中通过名称获取类类型引用?

    我实际上正在尝试使用 Rtti 来实现通用方法调用程序 它应该像这样工作 我将提供类名 方法名和参数 调用者将通过调用此类的指定方法来完成其工作 因此 我需要类引用才能获取其 Rtti 信息并寻找我想要调用的方法 有没有办法在不实现我想要使
  • 加载 Jpg/Gif/Bitmap 并转换为 Bitmap

    我必须从 XML 文件加载图像 XML 文件中没有关于图像是否为 JPG GIF BMP 的信息 加载图像后 我需要将其转换为位图 有谁知道如何在不知道实际文件格式的情况下将图像转换为位图 我正在使用 Delphi 2007 2009 谢谢
  • Delphi - 自XE8以来如何正确注册图形类?

    我正在编写一个 Delphi 包 它提供了一个新的自定义 TGraphic 对象 允许读取 VCL 组件 如 TImage 中的新图像格式 我最初使用 RAD Studio XE7 开发了这个包 并且运行良好 然而 我最近迁移到了较新的 R
  • 当显示对话框时淡出应用程序的所有其他窗口?

    如何在 Delphi 2009 中调暗 淡出应用程序的所有其他窗口 Form 有一个 AlphaBlend 属性 但它仅控制透明度级别 但如果我们能有这样的东西那就太好了 集中窗口 http www anappaday com downlo
  • Smalltalk Pharo ZdcSecureSMTPClient 在 GMail 中未显示 html 格式?

    我正在使用 ZdcSecureSMTPClient 将 html 格式的字符串发送到 gmail 帐户 但是当我发送它时 它会将 html 编码显示为纯文本 IE mailMessage MailMessage empty mailMess
  • 处理 TShellListView 后代中的文件放置

    我正在尝试创建 TShellListView 的后代 它接受从 Windows 资源管理器中删除的文件 我想在组件定义中处理拖 放操作 而不必在任何使用该组件的应用程序中实现它 我找到了接受从 Windows 资源管理器中拖放的文件的示例
  • 不断断点?如何去除它们?

    我下载了一个用Delphi 2009制作的项目 这也是我使用的 但是有一个断点我无法删除 如果我尝试删除它 它会在程序执行后再次执行 我在其他调试器中遇到了这样的事情 称为硬件断点 但这并不重要 如何删除断点 EDIT Article ht
  • Delphi 2009 IDE结构视图折叠功能

    现在有谁知道折叠 Delphi 2009 IDE 结构视图中的所有项目吗 我不知道折叠所有项目 这使我很难从视图中找到我的课程 Thanks 选择根节点 类 并按数字键盘上的 除号 那会让一切崩溃 然后按数字键盘上的 加号 键 第一级将展开

随机推荐

  • 适用于 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 的帮助 找到了这个解释 警告 你有什么 为了确保您的帐户安全