/// <summary> /// メール本文を作成する。 /// </summary> /// <param name="mail">本文を追加したいメールオブジェクト</param> private void CreateMailBody(TKMP.Writer.MailWriter mail) { TKMP.Writer.IPart part1 = new TKMP.Writer.TextPart("このメールはHTML形式表示可能なメーラーでご覧ください。", TKMP.Writer.Charsets.JIS); part1.Headers.Add("Content-Type", @"text/plain; charset=""ISO-2022-JP"""); TKMP.Writer.IPart part = new TKMP.Writer.TextPart(this._mailBody, TKMP.Writer.Charsets.JIS); part.Headers.Add("Content-Type", @"text/html; charset=""ISO-2022-JP"""); //mail.MainPart = part; TKMP.Writer.MultiPart mainpart = new TKMP.Writer.MultiPart(part1, part); mainpart.Headers.Add("Content-Type", mainpart.Headers["Content-Type"].Replace("mixed", "alternative")); mail.MainPart = mainpart; }
/// <summary> /// メールヘッダーを作成する /// </summary> /// <param name="mail">ヘッダーをつけたいメールオブジェクト</param> /// <param name="accountRow">アカウント情報</param> private void CreateMailHeader(TKMP.Writer.MailWriter mail, Account_DS.AccountRow accountRow) { //ヘッダ情報を追加します mail.Headers.Add("From", string.Format("{0} <{1}>", accountRow.SmtpSenderName, accountRow.SmtpSenderMail)); //「差出人」 mail.Headers.Add("Subject", this._mailSubject); //メールの件名 }
/// <summary> /// 引数のアカウントで引数のメールアドレスに対してメールを送信する。 /// </summary> /// <param name="accountRow">アカウント</param> /// <param name="address">メールアドレス</param> /// <returns>成功すればTrue、送信に失敗すればFalseを返す。</returns> private bool SendMail(Account_DS.AccountRow accountRow, Address_DS.AddressDataTable address) { //0件の場合は何もせずに終了。 if (address.Count == 0) { return(true); } //POP Before SMTPの場合 if (accountRow.UsePopBeforeSmtp == true) { this.DoPopBeforeSMTP(accountRow); } //SMTPクライアントの作成 TKMP.Net.SmtpClient smtp = this.CreateSMTPClient(accountRow); //接続に失敗したら、終了。 if (!smtp.Connect()) { return(false); } try { //TODO 決まった件数をまとめてメール送信する。 //TODO メール送信後、一度接続を解除する。 //メール送信を開始 smtp.MessageReceive += new TKMP.Net.MessageReceiveHandler(smtp_MessageReceive); smtp.MessageSend += new TKMP.Net.MessageSendHandler(smtp_MessageSend); //あて先アドレスをセット //メールオブジェクトの作成 TKMP.Writer.MailWriter mail = new TKMP.Writer.MailWriter(); //SMTPサーバーの問い合わせ用のアドレスをセット mail.FromAddress = accountRow.SmtpSenderMail; foreach (Address_DS.AddressRow adder in address) { mail.ToAddressList.Add(adder.MailAddress); } //Toにメーラーに表示させるにはこの行を追加 //mail.Headers.Add("To", adder.MailAddress); //本文の作成。(HTMLとして認識) this.CreateMailBody(mail); //ヘッダ情報を追加 this.CreateMailHeader(mail, accountRow); smtp.SendMail(mail); foreach (Address_DS.AddressRow adder in address) { this._writer.Write(string.Format("{0}にメールを送信しました。", adder.MailAddress)); } return(true); } finally { //サーバーから切断 smtp.Close(); this._writer.Dispose(); } }