可以通过Office365共享邮箱发送SMTP邮件吗?

RHa*_*ris 15 .net c# smtp office365 mailkit

我们正在考虑迁移到 O365;然而,我们开发的软件使用我们当前的 Exchange 服务器在发生错误时向外部用户和支持箱发送电子邮件。

我一直在对此进行测试,以确保我们现有的代码将继续与 O365 一起使用,但到目前为止,我还没有取得很大的成功。

我曾尝试使用 .Net 的 SmtpClient 以及 MailKit 的 SmtpClient,但似乎都不起作用。我不断收到错误(这是来自 MailKit 的错误——.Net 错误是类似的)

“AuthenticationInvalidCredentials:5.7.3 身份验证不成功 [*.prod.exchangelabs.com]”

我可以使用代码中的凭据登录 OWA - 所以我知道凭据是有效的。不能通过 O356 发送电子邮件吗?Exchange 中是否需要进行任何特殊配置才能实现这一点?

这是我迄今为止尝试过的:

邮件套件

var msg = new MimeMessage();
msg.From.Add(new MailboxAddress("Support","support@mydomain.com"));
msg.To.Add(new MailboxAddress("Me","me@mydomain.com"));
msg.To.Add(new MailboxAddress("External User","euser@externaldomain.com"));
msg.Subject = "Test";
msg.Body = new TextPart("plain"){
   Text = "Here is a message for you"
};
using(var client = new SmtpClient()){
    client.ServerCertificateValidationCallback = (s,c,h,e) => true;
    client.AuthenticationMechanisms.Remove("XOAUTH2"); //Not sure what this does.  Have tried with and without
    client.Connect("smtp.office365.com", 587, MailKit.Security.SecureSocketOptions.StartTls);
    client.Authenticate(new NetworkCredential("support@mydomain.com", "supportPwd"));
    client.Send(msg);
    client.Disconnect(true);
}
Run Code Online (Sandbox Code Playgroud)

.Net SmtpClient 代码看起来与 MailKit 代码非常相似。

  1. 有没有办法通过 O365 与许可用户一起发送?(上面的代码)
  2. Exchange 或许可用户是否需要进行任何特殊设置才能使其正常工作?(如果 1 的答案是肯定的)
  3. 是否可以通过认证用户具有“代理发送”权限的共享邮箱发送电子邮件?

更新

我仍然收到相同的错误消息。我们确实为域用户启用了 MFA。但是,我们有一项策略,当用户从受信任的位置(我们组织的 IP)登录时,他们不需要 MFA。我还将我们的 IP 列为可信 IP。在我看来,MFA 不应该是这里的问题。

我知道凭据是正确的。我从代码中复制它们,然后在登录 M365 时将它们粘贴到登录屏幕中——我进入得很好。

我究竟做错了什么?

Wol*_*ues 10

  1. Yes, you can.

  2. Usersettings: 管理中心截图 管理电子邮件应用程序的屏幕截图

Server-settings : https://support.office.com/en-us/article/POP-IMAP-and-SMTP-settings-for-Outlook-com-d088b986-291d-42b8-9564-9c414e2aa040

SMTP server name smtp.office365.com

SMTP port 587

SMTP encryption method STARTTLS
Run Code Online (Sandbox Code Playgroud)
  1. No, you cannot. You need a licenced user to send mail via SMTP.

https://answers.microsoft.com/en-us/msoffice/forum/msoffice_o365admin/set-up-smtp-relay-with-shared-mailbox/d7b98214-9564-432c-b098-525a98c529fb

A customer of ours has a newsletter system set up with TYPO3 and we had to create a new mailbox for this. However, a light one will suffice: instead of a Office 365 Business Premium we only assigned a Office 365 F1 licence.

Edit: also found this: Can Office365 shared mailbox use SMTP?