作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们一直在使用ICS , THtmlSmtpCli
在主 VCL 线程和线程中从我们的应用程序发送电子邮件已有一段时间了。本周早些时候,我们发现我们无法再从 Threads 发送电子邮件。从主 VCL 线程发送它工作正常。
所以,我的问题有两个方面:
我们使用的代码如下...
FRunning := True;
FHtmlSmtpClient := THtmlSmtpCli.Create(nil);
with FHtmlSmtpClient do
begin
Port := '25';
Host := FHost;
AuthType := smtpAuthNone;
ConfirmReceipt := FReadReceipt;
HdrPriority := smtpPriorityNone;
ContentType := smtpHtml;
FromName := FFromAddr;
HdrFrom := FFromAddr;
HdrTo := FToAddr;
HdrSubject := FSubject;
OnCommand := FHtmlSmtpClientCommand;
OnRequestDone := FHtmlSmtpClientRequestDone;
OnSessionClosed := FHtmlSmtpClientSessionClosed;
{ Start first operation to do to send an email }
{ Next operations are started from OnRequestDone event }
Connect;
end;
//Process the requests to send the email
procedure FHtmlSmtpClientRequestDone(Sender: TObject; RqType: TSmtpRequest; ErrorCode: word);
begin
if not FRunning then
Exit;
{ Start next operation, but first check if previous one was OK }
if ErrorCode <> 0 then
begin
FRunning := FALSE; { Terminate All-In-One demo }
Exit;
end;
case RqType of
smtpConnect:
begin
if FHtmlSmtpClient.AuthType = smtpAuthNone then
FHtmlSmtpClient.Helo
else
FHtmlSmtpClient.Ehlo;
end;
smtpHelo: FHtmlSmtpClient.MailFrom;
smtpEhlo: FHtmlSmtpClient.Auth;
smtpAuth: FHtmlSmtpClient.MailFrom;
smtpMailFrom: FHtmlSmtpClient.RcptTo;
smtpRcptTo: FHtmlSmtpClient.Data;
smtpData: FHtmlSmtpClient.Quit;
smtpQuit: FRunning := FALSE;
end;
end;
问候,彼得。
最佳答案
要回答您的第二个问题,您可以使用 Delphi 附带的 Indy。它具有 TIdMessage
和 TIdSMTP
组件,以及一个 TIdMessageBuilderHtml
实用程序类。
关于multithreading - 无法从 Delphi 中的线程使用 ICS (THtmlSmtpCli) 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9990783/
我们一直在使用ICS , THtmlSmtpCli 在主 VCL 线程和线程中从我们的应用程序发送电子邮件已有一段时间了。本周早些时候,我们发现我们无法再从 Threads 发送电子邮件。从主 VCL
我是一名优秀的程序员,十分优秀!