注意 - 我在 Delphi 编码方面并不是非常有经验,并且对我正在尝试修复的这个主题知之甚少。
我的问题是,我正在尝试向用户发送一封包含“发货详细信息”的电子邮件,这是基于我的程序需求。
我的代码给我一个错误,如下所示:
procedure TForm1.FormCreate(Sender: TObject);
var
smtp: TIdSMTP;
msg: TIdMessage;
sslHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
try
smtp := TIdSMTP.Create(nil);
msg := TIdMessage.Create(nil);
sslHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
// Configure SSL handler
sslHandler.SSLOptions.Method := sslvTLSv1_2;
sslHandler.SSLOptions.Mode := sslmUnassigned;
// Configure SMTP settings
smtp.IOHandler := sslHandler;
smtp.Host := 'smtp.gmail.com';
smtp.Port := 587;
smtp.Username := '';
smtp.Password := '';
// Create email message
msg.From.Address := '';
msg.Recipients.Add.Address := '';
msg.Subject := 'Delphi Test Email';
with TIdText.Create(msg.MessageParts, nil) do
begin
Body.Text := 'This is a test';
end;
// Connect and send email
smtp.Connect;
try
smtp.Send(msg);
finally
smtp.Disconnect;
end;
finally
// Clean up
sslHandler.Free;
msg.Free;
smtp.Free;
end;
except
on E: Exception do
ShowMessage('An error occurred: ' + E.Message);
end;
end;
我的表单上有相关组件,我的
uses
子句如下所示:
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdComponent, IdTCPConnection,
IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
IdBaseComponent, IdSMTP, IdMessage, IdText, IdSSLOpenSSL, IdIOHandler,
IdIOHandlerSocket, IdIOHandlerStack, IdSSL;
我不知道如何修复这个错误。
注意:我显然已经输入了所需的所有空字符串值,并尝试设置自定义应用程序密码,但无济于事。错误仍然出现。
要使用
STARTTLS
命令,您需要在调用TIdSMTP.UseTLS
之前将utUseExplicitTLS
属性设置为TIdSMTP.Connect()
。