|
|
|
@@ -0,0 +1,428 @@
|
|
|
|
|
using Education.Report;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Net.Mail;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Web;
|
|
|
|
|
using System.Web.Services.Description;
|
|
|
|
|
using WebLib;
|
|
|
|
|
|
|
|
|
|
namespace Education
|
|
|
|
|
{
|
|
|
|
|
public class 發送郵件
|
|
|
|
|
{
|
|
|
|
|
public HttpContext Context;
|
|
|
|
|
|
|
|
|
|
private string CheckMark(bool value)
|
|
|
|
|
{
|
|
|
|
|
return value ? "☑" : "☐";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送報名成功郵件(string 收件人姓名, string 收件人Email, DateTime 訓練日期,
|
|
|
|
|
DateTime 訓練日期迄, string 訓練名稱)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(收件人Email))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
string content = File.ReadAllText(Context.Server.MapPath("~/Template/報名郵件.html"));
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
mm.Subject = String.Format("【辦訓系統報名成功通知】{0} {1}",
|
|
|
|
|
訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd"), 訓練名稱);
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = true;
|
|
|
|
|
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
|
|
|
|
|
mm.Body = content
|
|
|
|
|
.Replace("{訓練日期}", 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄)) // .ToString("yyyy年MM月dd日(dddd)") + (訓練日期迄.Ticks > 0 ? "至" + 訓練日期迄.ToString("yyyy年MM月dd日(dddd)") : ""))
|
|
|
|
|
.Replace("{訓練名稱}", 訓練名稱);
|
|
|
|
|
mm.To.Add(new MailAddress(收件人Email, 收件人姓名));
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm, String.Format("報名成功郵件,對象={0} 訓練日期={1} 訓練名稱={2}",
|
|
|
|
|
收件人姓名, 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd"), 訓練名稱));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送取消報名郵件(string 收件人姓名, string 收件人Email, DateTime 訓練日期,
|
|
|
|
|
DateTime 訓練日期迄, string 訓練名稱)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(收件人Email))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
string content = File.ReadAllText(Context.Server.MapPath("~/Template/取消報名郵件.html"));
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
mm.Subject = String.Format("【辦訓系統取消報名通知】{0} {1}",
|
|
|
|
|
訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd"), 訓練名稱);
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = true;
|
|
|
|
|
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
|
|
|
|
|
mm.Body = content
|
|
|
|
|
.Replace("{取消日期}", DateTime.UtcNow.AddHours(8).Date.ToString("yyyy年MM月dd日"))
|
|
|
|
|
.Replace("{訓練日期}", 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄))
|
|
|
|
|
.Replace("{訓練名稱}", 訓練名稱);
|
|
|
|
|
mm.To.Add(new MailAddress(收件人Email, 收件人姓名));
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm, String.Format("取消報名郵件,對象={0} 訓練日期={1} 訓練名稱={2}",
|
|
|
|
|
收件人姓名, 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd"), 訓練名稱));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送學員行前通知郵件(string 收件人姓名, string 收件人Email,
|
|
|
|
|
string 聯絡人姓名, string 聯絡人電話, string 聯絡人Email, string 公司名稱,
|
|
|
|
|
DateTime 訓練日期, DateTime 訓練日期迄, string 訓練名稱, string 訓練地點, int 訓練時數,
|
|
|
|
|
訓練課程內容List 課程內容List, string 附件檔名, Stream 附件內容)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(收件人Email))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
string content = File.ReadAllText(Context.Server.MapPath("~/Template/學員行前通知.html"));
|
|
|
|
|
string 課程內容 = "";
|
|
|
|
|
|
|
|
|
|
// 拿課程類別來存放講師姓名
|
|
|
|
|
foreach (訓練課程內容 item in 課程內容List)
|
|
|
|
|
{
|
|
|
|
|
課程內容 += String.Format("<tr><td class=\"center\">{0}</td><td>{1}</td><td class=\"center\">{2}</td><td class=\"center\">{3}</td></tr>",
|
|
|
|
|
item.節次, item.課程名稱, item.時數, item.課程類別);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
mm.Subject = String.Format("【辦訓系統學員行前通知】{0} {1}",
|
|
|
|
|
訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd"), 訓練名稱);
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = true;
|
|
|
|
|
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
|
|
|
|
|
mm.Body = content
|
|
|
|
|
.Replace("{公司名稱}", 公司名稱)
|
|
|
|
|
.Replace("{訓練日期}", 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄))
|
|
|
|
|
.Replace("{訓練名稱}", 訓練名稱)
|
|
|
|
|
.Replace("{訓練地點}", 訓練地點)
|
|
|
|
|
.Replace("{訓練時數}", 訓練時數.ToString())
|
|
|
|
|
.Replace("{課程內容}", 課程內容);
|
|
|
|
|
mm.To.Add(new MailAddress(收件人Email, 收件人姓名));
|
|
|
|
|
if (!string.IsNullOrEmpty(聯絡人Email))
|
|
|
|
|
mm.ReplyTo = new MailAddress(聯絡人Email, 聯絡人姓名);
|
|
|
|
|
|
|
|
|
|
if (附件內容 != null)
|
|
|
|
|
{
|
|
|
|
|
mm.Attachments.Add(new Attachment(附件內容, 附件檔名, "octet/application"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm, String.Format("學員行前通知郵件,對象={0} 訓練日期={1} 訓練名稱={2}",
|
|
|
|
|
收件人姓名, 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd"), 訓練名稱));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送學員異動通知郵件(string 收件人姓名, string 收件人Email,
|
|
|
|
|
string 聯絡人姓名, string 聯絡人電話, string 聯絡人Email, string 公司名稱,
|
|
|
|
|
DateTime 訓練日期, DateTime 訓練日期迄, string 訓練名稱, string 訓練地點, int 訓練時數, string 異動內容)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(收件人Email))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
string content = File.ReadAllText(Context.Server.MapPath("~/Template/學員異動通知.html"));
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
mm.Subject = String.Format("【辦訓系統課程異動通知】{0} {1}",
|
|
|
|
|
訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd"), 訓練名稱);
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = true;
|
|
|
|
|
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
|
|
|
|
|
mm.Body = content
|
|
|
|
|
.Replace("{公司名稱}", 公司名稱)
|
|
|
|
|
.Replace("{訓練日期}", 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄))
|
|
|
|
|
.Replace("{訓練名稱}", 訓練名稱)
|
|
|
|
|
.Replace("{訓練地點}", 訓練地點)
|
|
|
|
|
.Replace("{訓練時數}", 訓練時數.ToString())
|
|
|
|
|
.Replace("{異動內容}", 異動內容);
|
|
|
|
|
mm.To.Add(new MailAddress(收件人Email, 收件人姓名));
|
|
|
|
|
if (!string.IsNullOrEmpty(聯絡人Email))
|
|
|
|
|
mm.ReplyTo = new MailAddress(聯絡人Email, 聯絡人姓名);
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm, String.Format("學員課程異動通知郵件,對象={0} 訓練日期={1} 訓練名稱={2}",
|
|
|
|
|
收件人姓名, 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd"), 訓練名稱));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送講師行前通知郵件(講師行前郵件Data data)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(data.收件人Email))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
string content = File.ReadAllText(Context.Server.MapPath("~/Template/講師行前通知.html"));
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
mm.Subject = String.Format("【辦訓系統講師行前通知】{0} {1}",
|
|
|
|
|
訓練課程企劃.Get訓練日期Str(data.訓練日期, data.訓練日期迄, "yyyy-MM-dd"), data.訓練名稱);
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = true;
|
|
|
|
|
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
|
|
|
|
|
|
|
|
|
|
content = content
|
|
|
|
|
.Replace("{公司名稱}", data.公司名稱)
|
|
|
|
|
.Replace("{講師姓名}", data.收件人姓名)
|
|
|
|
|
.Replace("{訓練名稱}", data.訓練名稱)
|
|
|
|
|
.Replace("{訓練地點}", data.訓練地點)
|
|
|
|
|
.Replace("{訓練地址}", data.訓練地址)
|
|
|
|
|
.Replace("{是否交通圖}", CheckMark(data.附件內容 != null))
|
|
|
|
|
.Replace("{訓練日期}", 訓練課程企劃.Get訓練日期Str(data.訓練日期, data.訓練日期迄))
|
|
|
|
|
.Replace("{訓練時間}", data.訓練時間)
|
|
|
|
|
.Replace("{訓練時間迄}", data.訓練時間迄)
|
|
|
|
|
.Replace("{備課時間}", data.備課時間)
|
|
|
|
|
.Replace("{聯絡人姓名}", data.聯絡人姓名)
|
|
|
|
|
.Replace("{聯絡人電話}", data.聯絡人電話)
|
|
|
|
|
.Replace("{聯絡人Email}", data.聯絡人Email)
|
|
|
|
|
.Replace("{受訓對象}", "")
|
|
|
|
|
.Replace("{是否攜帶筆電}", CheckMark(data.是否攜帶筆電))
|
|
|
|
|
.Replace("{是否攜帶簡報}", CheckMark(data.是否攜帶簡報))
|
|
|
|
|
.Replace("{是否攜帶其他}", CheckMark(data.是否攜帶其他))
|
|
|
|
|
.Replace("{攜帶其他}", data.攜帶其他)
|
|
|
|
|
.Replace("{是否場地投影機}", CheckMark(data.是否場地投影機))
|
|
|
|
|
.Replace("{是否場地麥克風}", CheckMark(data.是否場地麥克風))
|
|
|
|
|
.Replace("{是否場地雷射筆}", CheckMark(data.是否場地雷射筆))
|
|
|
|
|
.Replace("{是否場地筆電}", CheckMark(data.是否場地筆電))
|
|
|
|
|
.Replace("{是否場地座位安排}", CheckMark(data.是否場地座位安排))
|
|
|
|
|
.Replace("{是否場地白紙}", CheckMark(data.是否場地白紙))
|
|
|
|
|
.Replace("{是否場地其他}", CheckMark(data.是否場地其他))
|
|
|
|
|
.Replace("{場地其他}", data.場地其他)
|
|
|
|
|
.Replace("{是否講師費}", CheckMark(data.是否講師費))
|
|
|
|
|
.Replace("{講師費}", data.講師費)
|
|
|
|
|
.Replace("{是否交通費}", CheckMark(data.是否交通費))
|
|
|
|
|
.Replace("{交通費}", data.交通費)
|
|
|
|
|
.Replace("{合計}", data.合計)
|
|
|
|
|
.Replace("{是否現金}", CheckMark(data.是否現金))
|
|
|
|
|
.Replace("{是否匯款}", CheckMark(data.是否匯款))
|
|
|
|
|
.Replace("{給付日}", data.給付日.Ticks > 0 ? data.給付日.ToString("yyyy年MM月dd日") : "")
|
|
|
|
|
.Replace("{是否交通安排}", CheckMark(data.是否交通安排))
|
|
|
|
|
.Replace("{交通安排}", data.交通安排)
|
|
|
|
|
.Replace("{是否用餐}", CheckMark(data.是否用餐))
|
|
|
|
|
.Replace("{用餐}", data.用餐);
|
|
|
|
|
|
|
|
|
|
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(content, Encoding.UTF8, "text/html");
|
|
|
|
|
mm.AlternateViews.Add(htmlView);
|
|
|
|
|
mm.To.Add(new MailAddress(data.收件人Email, data.收件人姓名));
|
|
|
|
|
if (!string.IsNullOrEmpty(data.聯絡人Email))
|
|
|
|
|
{
|
|
|
|
|
mm.CC.Add(new MailAddress(data.聯絡人Email, data.聯絡人姓名));
|
|
|
|
|
mm.ReplyTo = new MailAddress(data.聯絡人Email, data.聯絡人姓名);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (data.附件內容 != null)
|
|
|
|
|
{
|
|
|
|
|
mm.Attachments.Add(new Attachment(data.附件內容, data.附件檔名, "octet/application"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm, String.Format("講師行前通知郵件,對象={0} 訓練日期={1} 訓練名稱={2}",
|
|
|
|
|
data.收件人姓名, 訓練課程企劃.Get訓練日期Str(data.訓練日期, data.訓練日期迄, "yyyy-MM-dd"), data.訓練名稱));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void 發送簽核相關郵件(int 簽核ID, bool 撤簽, string 收件人姓名, string 收件人Email)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(收件人Email))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
DAC_表單簽核主檔 Dao表單簽核主檔 = new DAC_表單簽核主檔();
|
|
|
|
|
表單簽核主檔List d = Dao表單簽核主檔.SelectOne(簽核ID);
|
|
|
|
|
|
|
|
|
|
string content;
|
|
|
|
|
if (!撤簽)
|
|
|
|
|
content = File.ReadAllText(Context.Server.MapPath("~/Template/簽核通知.html"));
|
|
|
|
|
else
|
|
|
|
|
content = File.ReadAllText(Context.Server.MapPath("~/Template/撤簽通知.html"));
|
|
|
|
|
|
|
|
|
|
if (d.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
string 表單ID = d[0].表單ID格式.Replace("<br>", " ");
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
if (!撤簽)
|
|
|
|
|
mm.Subject = String.Format("【辦訓系統簽核通知】表單類別:{0} 表單:{1}", d[0].表單類別ID, 表單ID);
|
|
|
|
|
else
|
|
|
|
|
mm.Subject = String.Format("【辦訓系統撤簽通知】表單類別:{0} 表單:{1}", d[0].表單類別ID, 表單ID);
|
|
|
|
|
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = true;
|
|
|
|
|
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
|
|
|
|
|
mm.Body = content.Replace("{表單類別}", d[0].表單類別ID)
|
|
|
|
|
.Replace("{表單}", d[0].表單ID格式);
|
|
|
|
|
mm.To.Add(new MailAddress(收件人Email, 收件人姓名));
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm, String.Format("辦訓系統簽核通知,對象={0} 表單類別={1} 單號={2}",
|
|
|
|
|
收件人姓名, d[0].表單類別ID, 表單ID));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送簽核郵件(int 簽核ID, string 收件人姓名, string 收件人Email)
|
|
|
|
|
{
|
|
|
|
|
發送簽核相關郵件(簽核ID, false, 收件人姓名, 收件人Email);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送撤簽郵件(int 簽核ID, string 收件人姓名, string 收件人Email)
|
|
|
|
|
{
|
|
|
|
|
發送簽核相關郵件(簽核ID, true, 收件人姓名, 收件人Email);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送滿意度催填郵件(string 收件人姓名, string 收件人Email,
|
|
|
|
|
string 訓練名稱, DateTime 訓練日期, DateTime 訓練日期迄, string 手機版網址)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(收件人Email))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
string 日期Str = 訓練課程企劃.Get訓練日期Str(訓練日期, 訓練日期迄, "yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
mm.Subject = "【辦訓系統】滿意度調查填寫通知";
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = false;
|
|
|
|
|
mm.Body = String.Format(
|
|
|
|
|
@"{0} 您好,
|
|
|
|
|
|
|
|
|
|
您參加的「{1}」({2})課程已結束,請於期限內填寫滿意度調查表。
|
|
|
|
|
|
|
|
|
|
請透過手機點選以下連結填寫:
|
|
|
|
|
{3}
|
|
|
|
|
|
|
|
|
|
感謝您的配合!
|
|
|
|
|
|
|
|
|
|
辦訓系統 敬上",
|
|
|
|
|
收件人姓名, 訓練名稱, 日期Str, 手機版網址);
|
|
|
|
|
mm.To.Add(new MailAddress(收件人Email, 收件人姓名));
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm, String.Format("滿意度催填郵件,對象={0} 課程={1}",
|
|
|
|
|
收件人姓名, 訓練名稱));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void 發送簽核跟催郵件(int 簽核ID, string 收件人姓名, string 收件人Email, int 天數, string templatePath)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(收件人Email))
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
DAC_表單簽核主檔 Dao表單簽核主檔 = new DAC_表單簽核主檔();
|
|
|
|
|
表單簽核主檔List d = Dao表單簽核主檔.SelectOne(簽核ID);
|
|
|
|
|
|
|
|
|
|
string content = File.ReadAllText(templatePath + @"\簽核跟催通知.html");
|
|
|
|
|
|
|
|
|
|
if (d.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
string 表單ID = d[0].表單ID格式.Replace("<br>", " ");
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
mm.Subject = String.Format("【辦訓系統簽核通知】表單類別:{0} 表單:{1}", d[0].表單類別ID, 表單ID);
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = true;
|
|
|
|
|
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
|
|
|
|
|
mm.Body = content.Replace("{表單類別}", d[0].表單類別ID)
|
|
|
|
|
.Replace("{表單}", d[0].表單ID格式)
|
|
|
|
|
.Replace("{天數}", 天數.ToString());
|
|
|
|
|
mm.To.Add(new MailAddress(收件人Email, 收件人姓名));
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm, String.Format("辦訓系統簽核跟催通知,對象={0} 表單類別={1} 單號={2} 天數={3}",
|
|
|
|
|
收件人姓名, d[0].表單類別ID, 表單ID, 天數));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool 發送扣繳明細表郵件(string 寄件人, DateTime? 起日, DateTime? 迄日, 扣繳匯總郵件Item mailData, out string message)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
message = String.Empty;
|
|
|
|
|
if (string.IsNullOrEmpty(寄件人))
|
|
|
|
|
{
|
|
|
|
|
message = "未提供寄件人郵箱";
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (mailData == null)
|
|
|
|
|
{
|
|
|
|
|
message = string.Format("寄給 {0} 的未提供扣繳明細表資料", mailData.收件人姓名);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrEmpty(mailData.收件人郵箱))
|
|
|
|
|
{
|
|
|
|
|
message = string.Format("寄給 {0} 的未提供未提供收件人郵箱", mailData.收件人姓名);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string content = File.ReadAllText(Context.Server.MapPath("~/Template/扣繳明細郵件.html"))
|
|
|
|
|
.Replace("{主旨}", mailData.主旨)
|
|
|
|
|
.Replace("{內文}", mailData.內文.Replace("\r\n", "<br/>").Replace("\r", "<br/>").Replace("\n", "<br/>"));
|
|
|
|
|
|
|
|
|
|
var report = new 扣繳領據明細郵件附件();
|
|
|
|
|
report.data = mailData.明細;
|
|
|
|
|
report.起日 = 起日;
|
|
|
|
|
report.迄日 = 迄日;
|
|
|
|
|
var attachment = report.DoReport();
|
|
|
|
|
var attachStream = new MemoryStream(attachment);
|
|
|
|
|
|
|
|
|
|
MailMessage mm = new MailMessage();
|
|
|
|
|
mm.Subject = mailData.主旨.Replace("\r", "").Replace("\n", "");
|
|
|
|
|
mm.BodyEncoding = Encoding.UTF8;
|
|
|
|
|
mm.IsBodyHtml = true;
|
|
|
|
|
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
|
|
|
|
|
mm.Body = content;
|
|
|
|
|
var 收件人郵箱 = mailData.收件人郵箱.Replace("\r", "").Replace("\n", "").Trim();
|
|
|
|
|
var 收件人姓名 = mailData.收件人姓名.Replace("\r", "").Replace("\n", "").Trim();
|
|
|
|
|
mm.To.Add(new MailAddress(收件人郵箱, 收件人姓名));
|
|
|
|
|
mm.Attachments.Add(new Attachment(attachStream, string.Format("{0}_扣繳領據明細.xlsx", mailData.收件人姓名)));
|
|
|
|
|
|
|
|
|
|
MailService.Send(mm
|
|
|
|
|
, comment: String.Format("扣繳明細,對象={0}", mailData.收件人姓名)
|
|
|
|
|
, UpdateTable: "領據"
|
|
|
|
|
, KeyField: "編號"
|
|
|
|
|
, KeyValue: string.Join("|", mailData.明細.Select(x => x.編號.ToString()).ToArray())
|
|
|
|
|
, UpdateField: "郵件已發送"
|
|
|
|
|
, UpdateValue: "1"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
message = ex.Message;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class 講師行前郵件Data
|
|
|
|
|
{
|
|
|
|
|
public string 收件人姓名;
|
|
|
|
|
public string 收件人Email;
|
|
|
|
|
public string 聯絡人姓名;
|
|
|
|
|
public string 聯絡人電話;
|
|
|
|
|
public string 聯絡人Email;
|
|
|
|
|
public string 公司名稱;
|
|
|
|
|
public DateTime 訓練日期;
|
|
|
|
|
public DateTime 訓練日期迄;
|
|
|
|
|
public string 訓練時間;
|
|
|
|
|
public string 訓練時間迄;
|
|
|
|
|
public string 備課時間;
|
|
|
|
|
public string 訓練名稱;
|
|
|
|
|
public string 訓練地點;
|
|
|
|
|
public string 訓練地址;
|
|
|
|
|
public bool 是否攜帶筆電;
|
|
|
|
|
public bool 是否攜帶簡報;
|
|
|
|
|
public bool 是否攜帶其他;
|
|
|
|
|
public string 攜帶其他;
|
|
|
|
|
public bool 是否場地投影機;
|
|
|
|
|
public bool 是否場地麥克風;
|
|
|
|
|
public bool 是否場地雷射筆;
|
|
|
|
|
public bool 是否場地筆電;
|
|
|
|
|
public bool 是否場地座位安排;
|
|
|
|
|
public bool 是否場地白紙;
|
|
|
|
|
public bool 是否場地其他;
|
|
|
|
|
public string 場地其他;
|
|
|
|
|
public bool 是否講師費;
|
|
|
|
|
public string 講師費;
|
|
|
|
|
public bool 是否交通費;
|
|
|
|
|
public string 交通費;
|
|
|
|
|
public string 合計;
|
|
|
|
|
public bool 是否現金;
|
|
|
|
|
public bool 是否匯款;
|
|
|
|
|
public DateTime 給付日;
|
|
|
|
|
public bool 是否交通安排;
|
|
|
|
|
public string 交通安排;
|
|
|
|
|
public bool 是否用餐;
|
|
|
|
|
public string 用餐;
|
|
|
|
|
public string 附件檔名;
|
|
|
|
|
public Stream 附件內容;
|
|
|
|
|
}
|
|
|
|
|
}
|