我们已经运行了一段时间的新系统正在测试中,并且正在将电子邮件创建到文件夹中,这样它们就不会意外地发送给客户。现在,我们打开了实时电子邮件,在发送时遇到了问题。

我正在使用ActionMailer.NET,下面是创建和发送电子邮件的代码。我将不包括视图:

EmailResult x = new EmailController().EmailWorkOrderForApprovalToClient(model);
            System.Net.Mail.Attachment file = new System.Net.Mail.Attachment(FilePath);
            x.Mail.Attachments.Add(file);
            x.Deliver();

这给出了错误

SMTP服务器需要安全连接,否则客户端将无法连接
已验证。服务器响应为:5.7.57 SMTP;客户不是
经过验证可在MAIL FROM期间发送匿名邮件

web.config看起来像这样:
  <system.net>
<mailSettings>
  <smtp deliveryMethod="Network" from="[email protected]">
    <specifiedPickupDirectory pickupDirectoryLocation="" />
    <network defaultCredentials="false" host="smtp.office365.com" password="secret" port="587" userName="[email protected]" />
  </smtp>
</mailSettings>

我的假设是enableSsl =“true”需要添加到网络行,但是当我这样做并尝试转到IIS中站点的SMTP电子邮件部分时,出现错误:

无法识别的属性“enableSsl”

我对IIS并不那么感兴趣,但是我已经检查了应用程序池及其.NET CLR版本是否为4.0.30319。我还检查了服务器上是否安装了.NET v4.5。

这让我感到困惑,我希望我不必完全将代码更改为允许我在此时指定SSL的方法。

最佳答案

在这里回答我自己的问题,基本上答案是:“不相信错误消息”。在我尝试过的所有配置中,我都认为错误消息告诉我这是不可接受的。但是,无论如何,我还是尝试了它,并且它在发送时使用了enableSsl属性,这允许成功连接到Office 365。

我会在一个星期内忘记的IIS漏洞,但现在很烦人。

10-04 11:21