使用 Indy 以 Outlook.com 发送电子邮件

Sending emails with Outlook.com using Indy

过去我可以使用 Indy 和 Hotmail 成功发送电子邮件,但是当我尝试使用 Outlook 帐户发送时,我总是收到 'Authentication unsuccessful' 错误。我的用户名和密码是正确的,我可以登录 Outlook.com webmail。

这是我的代码:

idsmtp1.Host := 'smtp.outlook.com';
idsmtp1.port := 587;
idsmtp1.Username := 'myuser@outlook.com';
idsmtp1.Password := 'mypassword';
idsmtp1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
idsmtp1.usetls := utUseExplicitTLS;
idsmtp1.UseEhlo := true   ;

IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmClient;

idsmtp1.connect;
idsmtp1.Send(idmessage1);

如果您对代码进行了零更改,并且它决定停止工作,那么您的 Outlook.com 帐户存在身份验证问题。

您很可能需要启用两步验证并创建应用程序密码。电子邮件服务通常会阻止您使用标准密码,除非该应用程序支持更现代的登录方法,并且它们会强制您在您的帐户上设置应用程序才能访问它。在访问应用密码部分之前,您必须先启用两步验证。

这些可以位于 Outlook.com > Options > Account Details > Security & Privacy > More Security Settings