以下是一些可能在搜索此主題以解答此問題的附註。 (在實施此解決方案之前,請務必閱讀底部的注意事項。)我無法爲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