用delphi发送电子邮件

用delphi发送电子邮件,delphi,delphi-7,Delphi,Delphi 7,我的问题是:我尝试用Delphi7发送电子邮件,但当我尝试发送时,我得到了一个错误 也许只是关于TIdSMTP的一个问题,它无法连接到smtps服务器,但我没有找到另一个用于Delphi7的发送邮件的组件 我的代码是: unit Unit1; interface uses inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdMessage, Id

我的问题是:我尝试用Delphi7发送电子邮件,但当我尝试发送时,我得到了一个错误

也许只是关于TIdSMTP的一个问题,它无法连接到smtps服务器,但我没有找到另一个用于Delphi7的发送邮件的组件

我的代码是:

unit Unit1;

interface

uses
  inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdMessageClient, IdSMTP, DB, DBTables, ExtCtrls,
  ComCtrls, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Button1: TButton;
    MailMessage: TIdMessage;
    SMTPS: TIdSMTP;
    AttachmentDialog: TOpenDialog;
    Body: TMemo;
    StatusMemo: TMemo;
    Timer1: TTimer;

    procedure Button1Click(Sender: TObject);
  private

  public
    Host : string;
    Port : string;
    Username : string;
    Password : string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Host, Username, Password : string;
begin

   Host     := 'smtps.aruba.it'; //Aruba SMTPS Host
   Username := 'xxxx@xxxxxxx.xxx';
   Password := 'yyyyyyyy';

  //setup SMTP
  SMTPS.Host := Host;
  SMTPS.Port := 465;//SMTPS Port of Aruba
  SMTPS.Username := Username;
  SMTPS.Password := Password;

  //setup mail message
  MailMessage.From.Address := 'xxxxx@xxxxxxxx.xxx';

  MailMessage.Subject := 'Subject';
  MailMessage.Body.Text := 'Body Text';

  //send mail
  try
    try
      SMTPS.Connect(1000);
      SMTPS.Send(MailMessage);
    except on E:Exception do
      showmessage(E.message);
    end;
  finally
    if SMTPS.Connected then SMTPS.Disconnect;
  end;

end;

end.

错误是:


连接正常关闭

我遇到了完全相同的问题,因此我编写了一个为我找到正确设置的应用程序。您要查看的源代码是
基本上,它遍历所有可能的
tidsmtauthenticationtype、tidslversion、TIdUseTLS

SSL库(libeay32.dll和ssleay32.dll)是否在项目文件夹中?如果没有,您可以在此处下载:您正在连接到SMTP隐式SSL端口,是否将
tidstp.UseTLS
属性设置为
utUseImplicitTLS
以匹配?在该端口上,需要在连接后立即协商SSL/TLS握手,然后才能交换任何SMTP通信。当服务器没有收到有效的握手时,它会强制踢你。如果将
UseTLS
设置为默认值
utNoTLSSupport
tidstp.Connect
将阻止等待从未发送的SMTP问候语,并仅在出现错误时取消阻止。您的
tidstp
配置实际上是什么样子的?您没有提供这些详细信息。另一个问题可能是托管方仅限制允许的加密版本TLS 1.2,并限制CypherSuite。旧的印地版本不支持这些开箱即用。