寄信程式或叫轉信程式
由於有一些網路前輩已經寫了程式範例,
所以我就列出在程式中設定smtp需要注意的地方。
先列出程式我是以hotmail為例,Gmail設定也是大同小異的。
using System;
using System.Text;
using System.Net.Mail;
namespace SendMail
{
class Program
{
static void Main(string[] args)
{
try
{
//***寫信***
System.Net.Mail.MailMessage em = new System.Net.Mail.MailMessage();
em.From = new System.Net.Mail.MailAddress("寄件信箱", "寄件者的顯示名稱", System.Text.Encoding.UTF8);
em.To.Add(new System.Net.Mail.MailAddress("收件信箱")); //收件者
em.Subject = "Subject"; //信件主題
em.SubjectEncoding = System.Text.Encoding.UTF8;
em.Body = "Body"; //內容
em.BodyEncoding = System.Text.Encoding.UTF8;
em.IsBodyHtml = true; //信件內容是否使用HTML格式
//***寄信設定***
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
//登入帳號認證
smtp.Credentials = new System.Net.NetworkCredential("寄件信箱", "密碼");
smtp.Port = 587;
smtp.EnableSsl = true; //啟動SSL
smtp.Host = "smtp-mail.outlook.com"; //SMTP伺服器
//***寄出***
smtp.Send(em);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine("Finish");
Console.ReadKey();
}
}
}
1.由上面程式範例知道你要寄信時要先寫信,
把一些寄件信箱、收件信箱、主題、內容、寄件者名稱等都寫好。
2.再來就是做寄件前的smtp設定,設定寄件信箱、密碼、port number與smtphost等等。
3.當設定好之後使用smtp.Send(),即可寄信出去。
另外注意的是,使用gmail寄信時,請調低安全性設定,
否則Gmail會很貼心地幫你擋下來喔。
5.使用outlook時記得要開啟SSL協定EnableSsl=true,
否則你也無法寄信出去,以下是未開啟SSL協定時的MVC錯誤訊息,請參考。
「SMTP 伺服器需要安全連接,或用戶端未經驗證。 伺服器回應為: 5.7.0 Must issue a STARTTLS command first
描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外狀況詳細資訊: System.Net.Mail.SmtpException: SMTP 伺服器需要安全連接,或用戶端未經驗證。 伺服器回應為: 5.7.0 Must issue a STARTTLS command first」
另外再附上gmail與傳送附件內嵌圖片範例
using System;
using System.Text;
using System.Net.Mail;
namespace SendMail
{
class Program
{
static void Main(string[] args)
{
try
{
//***寫信***
System.Net.Mail.MailMessage em = new System.Net.Mail.MailMessage();
em.From = new System.Net.Mail.MailAddress("寄件信箱", "寄件者的顯示名稱", System.Text.Encoding.UTF8);
em.To.Add(new System.Net.Mail.MailAddress("收件信箱")); //收件者
em.Subject = "takephotos"; //信件主題
em.SubjectEncoding = System.Text.Encoding.UTF8;
em.Body = "<img src=\"TJCOS-20151016-14-40-44.png\" />"; //內容
em.BodyEncoding = System.Text.Encoding.UTF8;
em.IsBodyHtml = true; //信件內容是否使用HTML格式
// 設定附件檔案(Attachment)
string strFilePath = @"C:\Users\tt232\Desktop\MyKinectPhoto\TJCOS-20151016-14-40-44.png";
System.Net.Mail.Attachment attachment1 =
new System.Net.Mail.Attachment(strFilePath);
attachment1.Name = System.IO.Path.GetFileName(strFilePath);
attachment1.NameEncoding = Encoding.GetEncoding("utf-8");
attachment1.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
// 設定該附件為一個內嵌附件(Inline Attachment)
attachment1.ContentDisposition.Inline = true;
attachment1.ContentDisposition.DispositionType =
System.Net.Mime.DispositionTypeNames.Inline;
em.Attachments.Add(attachment1);
//***寄信設定***
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
//登入帳號認證
smtp.Credentials = new System.Net.NetworkCredential("寄件信箱", "密碼");
smtp.Port = 587;
smtp.EnableSsl = true; //啟動SSL
smtp.Host = "smtp.gmail.com"; //SMTP伺服器
//***寄出***
smtp.Send(em);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine("Finish");
Console.ReadKey();
}
}
}
唯要注意的是使用內嵌圖片時,其檔名要指定正確。
參考資料: