今天研究在ASP.NET MVC於Action作完後,發mail到指定之User的方法,
在網路上Google一下,參考此篇文章:如何發送內嵌圖片的 E-mail ( Inline Attachment ) ,將其實作出來。
1.實作一個SendMail類別,程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.IO;
namespace IPRO.Ext
{
public class SendMail
{
#region private fields
private string _fromName;
private string _fromAddress;
private string _toName;
private string _toAddress;
private string _smtpServer;
private int _smtpPort;
private string _subject;
private string _body;
private string[] _filePath;
private string _mailEncoding = "utf-8";
#endregion
#region construtor
public SendMail(string fromName, string fromAddress, string toName,
string toAddress, string subject, string body,
string[] filePath, string smtpServer, int smtpPort)
{
this._fromName = fromName;
this._fromAddress = fromAddress;
this._toName = toName;
this._toAddress = toAddress;
this._subject = subject;
this._body = body;
this._filePath = filePath;
this._smtpServer = smtpServer;
this._smtpPort = smtpPort;
}
#endregion
#region public method
public void Send()
{
MailAddress from;
MailAddress to;
if (string.IsNullOrEmpty(_fromName))
{
from = new MailAddress(_fromAddress);
}
else
{
from = new MailAddress(_fromAddress, _fromName, Encoding.GetEncoding(_mailEncoding));
}
if (string.IsNullOrEmpty(_toName))
{
to = new MailAddress(_toAddress);
}
else
{
to = new MailAddress(_toAddress, _toName, Encoding.GetEncoding(_mailEncoding));
}
MailMessage message = new MailMessage(from, to);
if(string.IsNullOrEmpty(_subject))
{
_subject = "郵件主旨";
}
message.Subject = _subject;
message.SubjectEncoding = Encoding.GetEncoding(_mailEncoding);
if(string.IsNullOrEmpty(_body))
{
_body = "郵件內容";
}
message.Body = _body;
message.BodyEncoding = Encoding.GetEncoding(_mailEncoding);
message.IsBodyHtml = true;
message.Priority = MailPriority.High;
//設定附件檔案(Attachment)
if (_filePath.Length > 0)
{
for (int i = 0; i < _filePath.Length; i++)
{
Attachment attachment = new Attachment(_filePath[i]);
attachment.Name = Path.GetFileName(_filePath[i]);
attachment.NameEncoding = Encoding.GetEncoding(_mailEncoding);
attachment.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
// 設定該附件為一個內嵌附件(Inline Attachment)
attachment.ContentDisposition.Inline = true;
attachment.ContentDisposition.DispositionType = System.Net.Mime.DispositionTypeNames.Inline;
message.Attachments.Add(attachment);
}
}
if (_smtpPort == 0)
{
_smtpPort = 25;
}
if (string.IsNullOrEmpty(_smtpServer))
{
_smtpServer = "";
}
SmtpClient smtpClient = new SmtpClient(_smtpServer, _smtpPort);
try
{
smtpClient.Send(message);
System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString() + " 寄信成功!!!");
}
catch
{
System.Diagnostics.Debug.WriteLine(DateTime.Now.ToString() + " 寄信失敗!!!");
}
}
#endregion
}
}
2.於Action中加入SendMail功能:
SendMail mail = new SendMail("haha", "haha@gmail.com",
"haha", "haha@yahoo.com.tw", "主旨",
"內容", new string[] { },
"smtp.gmail.com", 25);
mail.Send();
沒有留言:
張貼留言