以下是一些可能在搜索此主题以解答此问题的附注。 (在实施此解决方案之前,请务必阅读底部的注意事项。)我无法为MS Office 365订阅没有用户或域的客户端发送电子邮件。我尝试通过我的[email protected] 365帐户尝试SMTP,但.NET邮件消息的地址是[email protected]。这是当“5.7.1客户端没有权限”错误弹出为我。要解决此问题,MailMessage类需要将发件人属性设置为我提供的SMTP凭据在O365中“发送”的许可权的电子邮件地址。我选择使用我的主帐户电子邮件([email protected]),如下面的代码所示。请记住,我可以使用任何电子邮件地址我O365帐户有权限“发送为”(即[email protected],[email protected]等)
using System;
using System.Net.Mail;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using (
MailMessage message = new MailMessage
{
To = { new MailAddress("[email protected]", "Recipient 1") },
Sender = new MailAddress("[email protected]", "Me"),
From = new MailAddress("[email protected]", "Client"),
Subject=".net Testing"
Body="Testing .net emailing",
IsBodyHtml=true,
}
)
{
using (
SmtpClient smtp = new SmtpClient
{
Host = "smtp.office365.com",
Port = 587,
Credentials = new System.Net.NetworkCredential("[email protected]", "Pa55w0rd"),
EnableSsl = true
}
)
{
try { smtp.Send(message); }
catch (Exception excp)
{
Console.Write(excp.Message);
Console.ReadKey();
}
}
}
}
}
}
请注意SmtpClient仅仅是一次性的,并且能够使用Using块中的.NET Framework 3.5通过.NET框架2的4
用户应使用SmtpClient这样...
SmtpClient smtp = new SmtpClient
{
Host = "smtp.office365.com",
Port = 587,
Credentials = new System.Net.NetworkCredential("[email protected]", "Pa55w0rd"),
EnableSsl = true
};
try { smtp.Send(message); }
catch (Exception excp)
{
Console.Write(excp.Message);
Console.ReadKey();
}
生成的电子邮件的标题会是这个样子:
Authentication-Results: spf=none (sender IP is)
[email protected];
Received: from MyPC (192.168.1.1) by
BLUPR13MB0036.namprd13.prod.outlook.com (10.161.123.150) with Microsoft SMTP
Server (TLS) id 15.1.318.9; Mon, 9 Nov 2015 16:06:58 +0000
MIME-Version: 1.0
From: Client <[email protected]>
Sender: Me <[email protected]>
To: Recipient 1 <[email protected]>
- 慎 -
注意一些邮件客户端可以作为音符显示的发件人地址。例如Outlook将沿着显示在阅读窗格中的头几行内容:客户名义<客户@ ClientDomain的
我<[email protected]>。com >
但是,只要收件人使用的电子邮件客户端不是垃圾邮件,就不会影响回复地址。答复仍应使用发件人地址。为了覆盖所有的基础,您还可以利用MailMessage.ReplyToList属性为客户提供一切机会来使用正确的回复地址。
此外,请注意,某些电子邮件服务器可能会拒绝任何发送代表另一家公司选址域所有者策略限制的电子邮件。一定要彻底测试并寻找任何反弹。我可以告诉你,我个人的Hotmail(mail.live.com)电子邮件帐户是拒绝我代表我的某个客户发送的邮件,但其他客户通过罚款。尽管我怀疑它与我的客户的域名TXT“spf1”记录有关,但我没有回答为什么它会拒绝代表一个域名与另一个域名发送的电子邮件。也许有人知道可以揭示这个问题?
它给出了什么错误? – BugFinder 2011-06-05 17:51:52
是的你得到一个超时 - 这显然是默认的失败 – 2011-06-06 10:10:34
所以即时通讯开始怀疑这是甚至可能使用C#和System.Net.Mail命名空间通过SSL设置的限制。看起来Exchange有它在Office 365上公开的webservices,很多文章都讨论了如何利用它来处理邮箱等。但是我真的不想将整个邮箱公开给我的LOB应用程序。 SMTP中的'S'代表'简单' - 我不相信微软安装的微软邮件服务器不能与微软的编程语言一起工作。请有人告诉我在这里错过了一些东西! – 2011-06-22 11:07:31