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

时间:2020-01-14 14:04:43

标签: c# .net smtp office365 mailkit

我们正在考虑迁移到O365;但是,我们开发了一种软件,该软件使用当前的Exchange服务器将发生错误的电子邮件发送给外部用户以及支持箱。

我一直在测试这一点,以确保我们所拥有的代码将继续与O365配合使用,但到目前为止,我还没有取得很大的成功。

我尝试使用.Net的SmtpClient和MailKit的SmtpClient,但似乎都无法使用。我不断收到错误消息(这是MailKit发出的错误-.Net错误类似)

“ AuthenticationInvalidCredentials:5.7.3身份验证失败[* .prod.exchangelabs.com]”

我可以使用代码中的凭据登录OWA,因此我知道这些凭据是有效的。无法通过O356发送电子邮件吗?为了使之成为可能,Exchange中必须进行任何特殊的配置吗?

这是我到目前为止尝试过的:

MailKit

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);
}

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

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

更新

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

我知道凭据是正确的。登录到M365时,我从代码中复制了它们并将它们粘贴到登录屏幕中-一切都很好。

我在做什么错了?

3 个答案:

答案 0 :(得分:9)

  1. 是的,可以。

  2. 用户设置: Screenshot of Admin Center Screenshot of Manage email apps

服务器设置: 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
  1. 不,你不能。您需要获得许可的用户才能通过SMTP发送邮件。

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

我们的客户有一个使用TYPO3设置的新闻通讯系统,因此我们必须为此创建一个新邮箱。但是,一个简单的就足够了:我们只分配了Office 365 F1许可证,而不是Office 365商业高级版。

编辑:还发现了这个:Can Office365 shared mailbox use SMTP?

答案 1 :(得分:0)

对于遇到类似问题的任何人,我发现我的问题是有条件访问策略。 Microsoft提供了Baseline Policy: Block Legacy Authentication -已在我们的AAD中启用。

在查看策略时,它旨在阻止任何不需要MFA的身份验证机制。这包括POP和SMTP之类的东西。一旦我禁用了此政策,上面列出的代码就可以正常工作。

答案 2 :(得分:0)

对我来说,仅禁用“安全默认值”是有帮助的。