Delphi 使用Indy发送Gmail账号邮件

3 篇文章 0 订阅

by marco cantu

一旦你把你的电子邮件帐户转移到GMail(甚至是整个域名),你就必须修正你在Delphi程序中用于自动生成和发送电子邮件的代码。事实上,GMail使用SMTP协议来发送电子邮件,但有一种特殊形式的SSH加密,称为TLS

让事情变得更加复杂的是,不同的客户端使用不同的端口和配置。特别是,Outlook(它不提供TLS支持)有不同的设置。对于Indy来说,你可以遵循其他客户端程序所使用的设置,比如为Thunderbird提供的设置。在这个新闻组的帖子中,有更多关于各种端口的信息。

Gmail使用25、465和587作为SMTP,但由于几乎所有的ISP都屏蔽了25,465是Gmail首选的带SSL的SMTP,而587是首选的带TLS的SMTP端口。

下面是一个演示程序的代码,其中有DFM文件和实际的Delphi代码(这和你一般使用的代码一样)。

object IdSMTP1: TIdSMTP
    OnStatus = IdSMTP1Status
    IOHandler = IdSSLIOHandlerSocketOpenSSL1
    Host = 'smtp.gmail.com'
    Password = '***'
    Port = 587
    SASLMechanisms = <>
    UseTLS = utUseExplicitTLS
    Username = '****'
  end
  object IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL
    Destination = 'smtp.gmail.com:587'
    Host = 'smtp.gmail.com'
    MaxLineAction = maException
    Port = 587
    SSLOptions.Method = sslvTLSv1
    SSLOptions.Mode = sslmUnassigned
    SSLOptions.VerifyMode = []
    SSLOptions.VerifyDepth = 0
    OnStatusInfo = IdSSLIOHandlerSocketOpenSSL1StatusInfo
  end
      IdSMTP1.Connect;
      IdSMTP1.Send(IdMessage1);
      IdSMTP1.Disconnect;

其中IdMessage1是你要发送的信息。当然,你既可以向你的Gmail账户发送信息,也可以向你的GMail账户中的任何其他账户发送信息。

注意。如果你不使用 "显式TLS",你将不得不进行额外的初始化调用(如。IdSMTP1.SendCmd('STARTTLS', 220);)。最后,IdSSLIOHandlerSocketOpenSSL1StatusInfo事件处理程序产生一个报告,像这样:

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"
      status: "SSL negotiation finished successfully"
      Cipher: name = [...]; description = [...] SSLv3 Kx=RSA Au=RSA  Enc=3DES(168)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值