我们正在考虑迁移到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代码非常相似。
更新
我仍然收到相同的错误消息。我们确实为我们的域用户启用了MFA。但是,我们有一项政策,当用户从受信任的位置(我们组织的IP)登录时,不需要用户使用MFA。我还将我们的IP列为“受信任的IP”。在我看来,MFA不应成为这里的问题。
我知道凭据是正确的。登录到M365时,我从代码中复制了它们,并将它们粘贴到登录屏幕中-一切都很好。
我究竟做错了什么?
服务器设置: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
我们的客户有一个使用TYPO3设置的新闻通讯系统,因此我们必须为此创建一个新邮箱。但是,只需一个简单即可:我们只分配了Office 365 F1许可证,而不是Office 365商业高级版。
编辑:还发现:Office365共享邮箱可以使用SMTP吗?
因此,这似乎可以回答我有关共享邮箱的问题。但是在我的初始代码中,我正在与一个许可用户一起使用,而且也不起作用-是吗?
@RHarris是的,应该。参见编辑后的答案。抱歉,回复不完整。