架設smtp server可利用免費軟體hMailServer(http://www.hmailserver.com)達成。參考以下網誌:
3分鐘輕鬆擁有自己的Mail Server
http://blog.xuite.net/sendohshih/blog/41958216
使用hMailServer步驟:
- 新增網域(Domain):因為只是作為系統發送郵件之用,故直接使用伺服器的IP作為domain name即可。例如140.112.X.X
- 在網域底下新增帳號:設定好帳號密碼,Administration level選擇User即可。等一下在程式碼中要使用這組帳號密碼。
- 接下來要到設定Settings>Protocols>SMTP,第二個頁籤"Delivery of e-mail",裡面有一個Local host name需要填寫東西。好像隨便填什麼都可以,不知道填什麼就填IP吧。
- **要注意的是防火牆需要允許Port 25(預設)連入。像我的的作業系統是windows server 2012,預設是沒有開啟的,需要到「具有進階安全性的Windows防火牆」裡面去新增規則,允許port 25。
ASP.NET程式碼(C#):
首先要using System.Net.Mail;
接下來這個function是從這邊copy過來的再稍微修改 http://www.codeproject.com/Questions/254743/sending-email-in-asp-net-using-smtp-gmail-server
/// <summary>
/// 發Email的功能。回傳成功或錯誤訊息。
/// </summary>
/// <param name="toList">收件者地址,一個以上可以分號分隔</param>
/// <param name="from">寄件者地址</param>
/// <param name="ccList">副本地址</param>
/// <param name="subject">主旨</param>
/// <param name="body">信件內容</param>
/// <returns></returns>
public string SendMail(string toList, string from, string ccList, string subject, string body)
{
MailMessage message = new MailMessage();
SmtpClient smtpClient = new SmtpClient();
string msg = string.Empty;
try
{
MailAddress fromAddress = new MailAddress(from);
message.From = fromAddress;
message.To.Add(toList);
if (ccList != null && ccList != string.Empty)
message.CC.Add(ccList);
message.Subject = subject;
message.IsBodyHtml = true;
message.Body = body;
smtpClient.Host = "140.112.X.X"; //您的IP!!
smtpClient.Port = 25;
smtpClient.EnableSsl = false;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new System.Net.NetworkCredential("剛剛設定的帳戶", "密碼");
smtpClient.Send(message);
msg = "寄送成功";
}
catch (Exception ex)
{
msg = ex.Message;
}
return msg;
}
設定好這個function,就可以愉快的寄送email了。
有趣的是可以隨便設定寄件者地址,所以我們可以知道E-mail的寄件者地址不一定是可靠的。例如說也可以設定類似 no-reply@mycompany.com作為寄件者地址,註明「此為系統信件請勿回覆!」因為這個地址根本是亂寫的~回了也不會有人收到~
沒有留言:
張貼留言
跟我說說話吧!