コード例 #1
0
        /// <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;
        }
コード例 #2
0
 /// <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);                                                             //メールの件名
 }
コード例 #3
0
        /// <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();
            }
        }