C#發送Outlook郵件(僅SMTP版本)

先代表Outlook的參數:網址:https://support.office.com/zh-cn/article/Outlook-com-%E7%9A%84-POP%E3%80%81IMAP-%E5%92%8C-SMTP-%E8%AE%BE%E7%BD%AE-d088b986-291d-42b8-9564-9c414e2aa040html

POP 訪問是被默認禁用的。 若要啓用 POP 訪問,請參閱在 Outlook.com 中啓用 POP 訪問。c#

IMAP 服務器名稱outlook.office365.com服務器

IMAP 端口 993測試

IMAP 加密方法TLSui

POP 服務器名稱outlook.office365.com阿里雲

POP 端口 995加密

POP 加密方法 TLSspa

SMTP 服務器名稱smtp.office365.com.net

SMTP 端口 587code

SMTP 加密方法 STARTTLS


安裝nuget包:由於使用的core項目,因此引用了ReturnTrue.AspNetCore.Net.SmtpClient包(SmtpClient)。

官方指定代碼:

Yes, I am using SMTP client submission. This is the c# code: var smtpClient = new SmtpClient() { Host = "smtp.office365.com", Port = 587, UseDefaultCredentials = false, EnableSsl = true }; smtpClient.Credentials = new NetworkCredential("*** 發送郵箱帳號 ***", "密碼"); var message = new MailMessage { From = new MailAddress("*** 發送郵箱帳號 ***"), Sender = new MailAddress("*** 接收郵箱帳號 ***"), Subject = "Test mail", IsBodyHtml = false }; message.To.Add("*** 接收郵箱帳號 ***"); message.Body = "This is a test mail. "; smtpClient.Send(message);

上述代碼運行無誤,由於一開始沒有找到該代碼,致使寫的代碼出現如下異常:

Message=The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [HK0P153CA0010.APCP153.PROD.OUTLOOK.COM]

源代碼:這是我以前寫的代碼,其實是同樣的,可是一開始一直報上述錯誤(緣由就是在綁定帳號密碼前要設置UseDefaultCredentials = false)

string smtpServer = "smtp.office365.com"; int smtpPort = 587; string mailFrom = "xxx@outlook.com"; string passWord = "xxxxxx"; string mailTo = "xxxx@qq.com"; SmtpClient smtpClient = new SmtpClient(smtpServer, smtpPort); smtpClient.UseDefaultCredentials = false;//寫到這裏不報錯
            smtpClient.Credentials = new NetworkCredential(mailFrom, passWord); smtpClient.EnableSsl = true; //smtpClient.UseDefaultCredentials = false;//寫到這裏會報錯,必須在帳號密碼綁定前寫。
            MailAddress mailAddressFrom = new MailAddress(mailFrom); MailAddress mailAddressTo = new MailAddress(mailTo, "xx的QQ郵箱"); MailMessage mailMessage = new MailMessage(mailAddressFrom, mailAddressTo); mailMessage.Subject = "用c#測試發送郵件"; mailMessage.Body = "這是一次測試發送,發送人用的outlook郵箱"; mailMessage.BodyEncoding = Encoding.UTF8; smtpClient.Send(mailMessage);

代碼很短,單想到實例化對象的順序還會產生這樣的結果,之後要注意了。

後續事項:域名未設置 SPF 解析記錄 

 

漏洞描述

SPF 記錄是一種域名服務(DNS)記錄,用於標識哪些郵件服務器能夠表明您的域名發送電子郵件。 SPF 記錄的目的是爲了防止垃圾郵件發送者在您的域名上,使用僞造的發件人地址發送郵件。

若您未對您的域名添加 SPF 解析記錄,則黑客能夠仿冒以該域名爲後綴的郵箱,來發送垃圾郵件。

修復方案

在您的 DNS 服務提供商處,爲您的域名添加一條 TXT 記錄:

  • 將主機字段(Host)設置爲您子域名的名稱。(例如,若是您的電子郵件地址是contact@mail.example.com,則爲 mail。)若是不使用子域名,則將其設爲@

  • 用您的 SPF 記錄填寫 TXT 值字段。例如 v=spf1 a mx include:secureserver.net ~all

  • 對應的阿里雲方案連接:https://help.aliyun.com/knowledge_detail/37532.html?spm=5176.13394938.0.0.79dc2e17bQeEkN 它那個txt值包含中文符號,有點問題
相關文章
相關標籤/搜索