Design

Design
asp.net mvc

2017年5月31日 星期三

C# Email Send SmtpClient

簡單郵件傳輸協定[編輯]

維基百科,自由的百科全書
簡單郵件傳輸協定 (Simple Mail Transfer Protocol, SMTP) 是事實上的在Internet傳輸email的標準。
SMTP是一個相對簡單的基於文字協定。在其之上指定了一條訊息的一個或多個接收者(在大多數情況下被確認是存在的),然後訊息文字會被傳輸。可以很簡單地通過telnet程式來測試一個SMTP伺服器。SMTP使用TCP埠25。要為一個給定的域名決定一個SMTP伺服器,需要使用MX (Mail eXchange) DNS
在八十年代早期SMTP開始被廣泛地使用。當時,它只是作為UUCP的補充,UUCP更適合於處理在間歇連線的機器間傳送郵件。相反,SMTP在傳送和接收的機器在持續連線的網路情況下工作得最好。
Sendmail是最早使用SMTP的郵件傳輸代理之一。到2001年至少有50個程式將SMTP實現為一個用戶端(訊息的傳送者)或一個伺服器(訊息的接收者)。一些其他的流行的SMTP伺服器程式包括了Philip Hazel的exim,IBM的Postfix, D. J. BernsteinQmail,以及Microsoft Exchange Server
由於這個協定開始是基於純ASCII文字的,它在二進位檔案上處理得並不好。諸如MIME的標準被開發來編碼二進位檔案以使其通過SMTP來傳輸。今天,大多數SMTP伺服器都支援8位元MIME擴充功能,它使二進位檔案的傳輸變得幾乎和純文字一樣簡單。
SMTP是一個「推」的協定,它不允許根據需要從遠端伺服器上「拉」來訊息。要做到這點,郵件用戶端必須使用POP3IMAP。另一個SMTP伺服器可以使用ETRN在SMTP上觸發一個傳送。


C# SmtpClient 透過smtp 寄信的功能 詳細功能如下紀錄一下 這邊已Gmail為例
 紀錄一下



using System.Net;
using System.Net.Mail;

  public void SendEmail()
        {
            //設定smtp主機
            string smtpAddress = "smtp.gmail.com";
            //設定Port
            int portNumber = 587;
            bool enableSSL = true;
            //填入寄送方email和密碼
            string emailFrom = "123123@gmail.com";
            string password = "123123";
            //收信方email 可以用逗號區分多個收件人
            string emailTo = "123@gmail.com,abc@gmail.com";
            //主旨
            string subject = "Hello";
            //內容
            string body = "Hello, I'm just writing this to say Hi!";

            using (MailMessage mail = new MailMessage())
            {
                mail.From = new MailAddress(emailFrom);
                mail.To.Add(emailTo);
                mail.Subject = subject;
                mail.Body = body;
                // 若你的內容是HTML格式,則為True
                mail.IsBodyHtml = false;

                //如果需要夾帶檔案
                //mail.Attachments.Add(new Attachment("C:\\SomeFile.txt"));
                //mail.Attachments.Add(new Attachment("C:\\SomeZip.zip"));

                using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber))
                {
                    smtp.Credentials = new NetworkCredential(emailFrom, password);
                    smtp.EnableSsl = enableSSL;
                    smtp.Send(mail);
                }
            }
        }

如果出現錯誤
SMTP 伺服器需要安全連接,或用戶端未經驗證。 伺服器回應為: 5.5.1 Authentication Required. Learn more at
代表 Gmail的兩段驗證讓他導致錯誤
這時候我們可以去
https://myaccount.google.com/security
最下面的地方 把允許安全性較低應用程式 狀態啟動 就OK了

沒有留言:

張貼留言