我正在尝试使用这些设置使用gmail帐户(Delphi 7,Indy 10)发送电子邮件:

TIdSmtp:

Port = 587;
UseTLS := utUseExplicitTLS;

TIdSSLIOHandlerSocketopenSSL:

SSLOptions.Method := sslvTLSv1;

一切似乎都设置好了.我收到了这个回复:

Resolving hostname smtp.gmail.com.
Connecting to 74.125.77.109.
SSL status: "before/connect initialization"
SSL status: "before/connect initialization"
SSL status: "SSLv3 write client hello A"
SSL status: "SSLv3 read server hello A"
SSL status: "SSLv3 read server certificate A"
SSL status: "SSLv3 read server done A"
SSL status: "SSLv3 write client key exchange A"
SSL status: "SSLv3 write change cipher spec A"
SSL status: "SSLv3 write finished A"
SSL status: "SSLv3 flush data"
SSL status: "SSLv3 read finished A"
SSL status: "SSL negotiation finished successfully"
SSL status: "SSL negotiation finished successfully"
Cipher: name = RC4-MD5; description = RC4-MD5                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=MD5 
; bits = 128; version = TLSv1/SSLv3;

然后它挂起并没有完成.电子邮件未发送.可能是什么问题?

解决方法

是的,我已经看到了indy10和tls(通常是gmail)的很多问题.

首先确保你有最新的ssl库from here

我已经看到间歇性的失速和错误已经在indy的最新版本中得到解决(即非稳定释放).见http://www.indyproject.org/sockets/download/svn.DE.aspx

对于gmail,我通常在端口465上使用implicityTLS ..

idSmtp := TIdSMTP.Create(nil);
  try
    idSmtp.IOHandler := nil;
    idSmtp.ManagedioHandler := true;

    // try to use SSL
    try
      TIdSSLContext.Create.Free;
      idSmtp.IOHandler := TIdSSLIOHandlerSocketopenSSL.Create(idSmtp);
      if (smtpSettings.port = 465) then
        idSmtp.UseTLS := utUseImplicitTLS
      else
        idSmtp.UseTLS := utUseExplicitTLS;
    except
      idSmtp.IOHandler.Free;
      idSmtp.IOHandler := nil;
    end;

    if (idSmtp.IOHandler = nil) then
    begin
      idSmtp.IOHandler := TIdioHandler.MakeDefaultIOHandler(idSmtp);
      idSmtp.UseTLS := utNoTLSSupport;
    end;

    // send message,etc

  finally
    idSmtp.Free;
  end;

delphi – Indy 10 – IdSMTP.Send()在从GMail帐户发送邮件时挂起的更多相关文章

  1. ios – 如何检查CNContact swift中的联系人来源?

    在联系人应用程序中,有像“iCloud”,“yahoo”,“gmail”这样的组.在swift中,是否可以仅从gmail源获取联系人?

  2. iOS中的深层链接在Gmail中被删除

    我正在尝试发送一个电子邮件,深入链接到我的iOS应用程序,使用myapp://格式从电子邮件中打开它.在任何iOS邮件客户端中,但不在Gmail应用程序中都可以使用它将其删除,仅留下文本.除了创建一个从浏览器重定向到应用程序的网络链接之外,有没有人有解决方案/替代方案?

  3. ios – 我在哪里可以找到用于创建IPad应用程序的Delphi资源?

    我之前一直在使用Delphi并且一直都是Windows家伙.我的妻子为我的生日买了一台新的iPad,我昨晚第一次使用它.哇!…

  4. 如何从命令行部署OSX或IOS Delphi项目?

    我正在使用像这样的脚本构建我的Delphi应用程序现在我想添加一个选项将应用程序部署到OSX系统修改这样的脚本,那么可以从命令行部署OSX或IOSDelphi项目吗?

  5. android – 如何在Intent ACTION_SEND中将超链接传递给Gmail?

    可能是这个问题已经被问到或者是另一个问题的重复,但是我的搜索没有得到任何解决方案.以下是我对我的问题所遵循的链接:Link1Link2实际上,我的问题与使用ACTION_SEND在Android默认意图中共享HTML文本有关.当我尝试创建具有不同值的URL的超链接时,它显示一个简单的值文本.这不是可点击的链接.我是这样做的:对于body2:当我使用Gmail共享文本时,电子邮件中的超链接文本将作为

  6. android – 是否有任何好的短代码示例只是读取一个新的Gmail邮件?

    我一直在尝试编写一个定期解析gmail消息内容的应用程序.我已经阅读了JavaMail常见问题解答,我已经查看了JavaMail下载包中的一些示例,但无法使其工作.下面的代码当前导致以下gmail错误:Hostisunresolved:imaps.gmail.com:993我也试过imap.gmail.com:143但得到:Hostisunresolved:imap.gmail.com:143任何

  7. android – 用于KitKat的GMail在发送非图像或视频的附件时崩溃

    更新3:似乎这一切都是由OTA升级到KitKat4.4引起的.强制停止和清除GMail应用程序的数据解决了这个问题.不是OTA更新的用户友好结果.更新2:崩溃完全是由于Android4.4KitKat中新的Gmail文件处理造成的.当添加任何其他文件类型作为附件而不是图像或视频时,GMail会在发送电子邮件时崩溃.为何删除其应用的功能?

  8. android – 在UserRecoverableAuthUIException之前的GMail API授予权限

    我按照Google的快速入门示例设置了GMailAPI:https://developers.google.com/gmail/api/quickstart/android我的应用成功请求GET_ACCOUNTS权限,并允许用户选择他/她的Gmail帐户.所选帐户将保存在SharedPreferences中以供以后访问.通过IntentService,我的应用程序发送电子邮件.我按照此处的说明操作

  9. android – 如何在我的应用程序中访问gmail附件数据

    我想它必须与Intent.get…Extra()函数之一,但是哪个,以及如何使用它?解决方法找到了怎么做.希望这可以帮助别人.派对矿,部分来自其他职位.它的目标是处理.gcsb文件附件.意图过滤器是并且活动onCreate()/onRestart()中的代码是它似乎适用于标准的Androidgmail和邮件应用程序.根据是否在gmail中按下“下载”或“预览”,可以获得两种不同的文件名.请注意,将活动设置为单个实例非常重要.

  10. 如何检查Android和iOS上的网络是否可用(Delphi XE5)

    解决方法试试这个:

随机推荐

  1. delphi – 主窗口按进程名称处理

    DelphiXe,Win7x64如何从进程名称(exe文件的完整路径)获取主窗口句柄,或至少一个类或窗口名称(如果该进程只有一个窗口).例:解决方法我同意Petesh的说法,你需要枚举顶级窗口并检查创建它的进程的模块文件名.为了帮助您开始枚举顶级窗口,这是一个delphi实现.首先,当你回调给你时,你需要一些与EnumWindows方法通信的方式.为此声明一条记录,该记录将保存您要查找的模块的文件

  2. 如何在Delphi中纯粹通过RTTI信息(即不使用任何实际对象实例)获取TObjectList的子项类型?

    我正在使用RTTI实现用于流式传输任意Delphi对象的通用代码,并且为了使其工作(更具体地说,为了使加载部分工作),我需要以某种方式获得TObjectList的子项类型<T>不使用任何实际对象实例的字段.要求不使用任何实际对象实例的明显原因是,在从流加载对象的情况下(仅基于要加载的对象的类类型的知识),我将不会有任何实例在加载完成之前完全可用–我宁愿只能访问相关类的纯RTTI数据.我希望能

  3. inno-setup – Inno Setup – 安装程序背景图片

    图像作为安装程序背景如何用inno5.5.9做到这一点?

  4. inno-setup – Inno Setup – 如何添加多个arc文件进行解压缩?

    使用InnoSetup解压缩弧文件.我希望有可能解压缩多个arc文件以从组件选择中安装文件(例如).但仍然显示所有提取的整体进度条.这可能吗?的回答的修改预备是相同的,参考其他答案.在ExtractArc中,为要提取的每个存档调用AddArchive.

  5. delphi – 如何在DataSet的帮助下在TAdvStringGrid中显示数据库中的BLOB图像

    解决方法CreateBlobStream正在创建一个TStream对象,而不是TMemoryStream.由于您不想将JPG写入数据库,因此应使用bmRead而不是bmReadWrite.我不习惯sqlite,但你必须确保使用合适的二进制日期类型.为了确保存储的图像真的是JPG,您应该编写JPG以进行测试,例如:

  6. inno-setup – 在Inno Setup的Code部分下载程序后运行程序

    如何运行我通过Internet下载的应用程序,在代码部分中使用,并等待该应用程序完成运行.我有,使用InnoTools下载程序,下载这两个文件,我想,在第二个完成下载后运行该下载,或jdk-8u111-windows-x64.exe,然后继续安装.解决方法使用其他下载插件,而不是ITD(请参阅下面的原因).例如,InnoDownloadPlugin.当您包含idp.iss时,它定义了一个全局IDP

  7. progress-bar – Inno Setup Run部分的简单进度页面

    我的安装程序非常简单,它基本上是:>欢迎页面>进展页面>最终页面欢迎页面和最终页面是标准页面.在Progress页面,我正在静默安装一堆其他程序.实际的脚本是在[Run]部分中安装每个程序.问题是酒吧达到100%然后停留在那里.我只能更改消息文本.我想要实现的是使用Pascal脚本显示进度,例如:这样我就可以显示更准确的进度条.这就是我所拥有的:问题是,当我构建安装程序时,它不显示欢迎页面.我做错了什么?

  8. delphi – 如何使“显示/隐藏桌面图标”设置生效?

    下面的代码调用SHGetSetSettings函数来隐藏桌面图标但它只是从视图菜单中取消选中“显示桌面图标”.我打电话给SHChangeNotify;更新桌面,但这不起作用?解决方法isa,要刷新桌面,您可以将F5键发送到progman窗口隐藏桌面图标的另一种方法是再次显示

  9. inno-setup – Inno Setup – 避免显示子安装程序的文件名

    我试图使用InnoSetup–Howtohidecertainfilenameswhileinstalling?(FilenameLabel)的想法Theonlysuresolutionistoavoidinstallingthefiles,youdonotwanttoshow,usingthe[Files]section.Installthemusingacodeinstead.UsetheEx

  10. inno-setup – Inno Setup磁力链接下载实施

    我目前正在使用InnoDownloadPlugin为我的安装程序下载文件,这个问题最大的问题是faila正确下载文件.因为连接不良等诸多原因.我想添加一种替代方法来下载文件,因此用户可以选择是否需要常规方式或torrent方式.我知道我可以使用aria2c.exe应用程序(https://aria2.github.io/),有人可以帮我实现它的inno设置代码吗?我需要的是使用torrent(ar

返回
顶部