SmtpClient 附件+Inline圖檔插圖
發表於 : 週三 10月 05, 2011 11:40 am
代碼: 選擇全部
const string testName = "小堃모발 이식 비용堃一杯を求めて ラーメンは進化し続ける雲端時代來臨,心動不如馬上行動,搶先體驗 Rusli 顧客服務!";
const string testBody = "小堃모발 이식 비용{0}堃一杯を求めて ラー{1}メンは進化し続ける雲端時代來臨,心動不如馬上行動,搶先體驗 Rusli 顧客服務!";
const string testImg = "<img src='cid:{0}' width='100px' height='100px'></img>";
var networkCredential = new NetworkCredential("your account", "your passwd");
const string smtpServer = "your mail server";
string attachFileName = string.Format(@"C:\{0}.xls", testName);
string inlinefileName = string.Format(@"C:\{0}.jpg", testName);
string inlinefileName2 = string.Format(@"C:\{0}.gif", testName);
var contentIDs = new[] {Guid.NewGuid().ToString(), Guid.NewGuid().ToString()};
var files = new[] {inlinefileName, inlinefileName2};
var mailsTo = new[] { "rusli@gmail"};
var mailFrom = new MailAddress("rusli@gmail");
string subject = DateTime.Now.Ticks + testName;
string img1 = string.Format(testImg, contentIDs[0]);
string img2 = string.Format(testImg, contentIDs[1]);
string body = string.Format(testBody, img1, img2);
string encodeSubject = string.Format("=?UTF-8?B?{0}?=",
Convert.ToBase64String(System.Text.Encoding.GetEncoding("UTF-8").GetBytes(subject)));
var mailMessage = new MailMessage
{
From = mailFrom,
SubjectEncoding = Encoding.ASCII,
Subject = encodeSubject
};
foreach (var m in mailsTo)
{
mailMessage.To.Add(new MailAddress(m));
}
//// 附件處理
encodeSubject = string.Format("=?UTF-8?B?{0}?=",
Convert.ToBase64String(System.Text.Encoding.GetEncoding("UTF-8").GetBytes(attachFileName)));
Attachment file = new Attachment(System.IO.File.OpenRead(attachFileName), "", "application/octet-stream; charset=Big5; name=\"" + encodeSubject + "\"");
ContentDisposition disposition = file.ContentDisposition;
disposition.FileName = encodeSubject;
file.TransferEncoding = TransferEncoding.Base64;
mailMessage.Attachments.Add(file);
//// body 處理附件 inline 方式
AlternateView view = AlternateView.CreateAlternateViewFromString(body, Encoding.GetEncoding("utf-8"),
"text/html");
view.TransferEncoding = TransferEncoding.Base64;
for (int i = 0; i < files.Length; i++)
{
attachFileName = files[i];
string contentId = contentIDs[i];
string contentType = ImageContentType.GetContentText(attachFileName);
var linkedResource = new LinkedResource(attachFileName, contentType + "; charset=Big5; name=\"" + encodeSubject + "\"")
{
TransferEncoding = TransferEncoding.Base64,
ContentId = contentId,
ContentType = {MediaType = contentType}
};
view.LinkedResources.Add(linkedResource);
}
mailMessage.AlternateViews.Add(view);
var smtpClient = new SmtpClient
{
Host = smtpServer,
EnableSsl = false,
UseDefaultCredentials = false,
Credentials = networkCredential
};
smtpClient.Send(mailMessage);