Ejemplo n.º 1
0
        /// <summary>
        /// smtpクライアントを作成する。
        /// </summary>
        /// <param name="accountRow">アカウント情報</param>
        /// <returns>smtpクライアント</returns>
        private TKMP.Net.SmtpClient CreateSMTPClient(Account_DS.AccountRow accountRow)
        {
            TKMP.Net.SmtpClient smtp = null;

            if (accountRow.UseSmtpAuth == true)
            {
                //SMTPサーバーで認証を利用する場合
                TKMP.Net.ISmtpLogon logon = new TKMP.Net.AuthLogin(accountRow.PopUserId, CryptographyUtil.DecryptString(accountRow.PopPassword));
                smtp = new TKMP.Net.SmtpClient(accountRow.SmtpServer, accountRow.SmtpPort, logon);
            }
            else
            {
                //通常送信
                smtp = new TKMP.Net.SmtpClient(accountRow.SmtpServer, accountRow.SmtpPort);
            }

            return(smtp);
        }
Ejemplo n.º 2
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();
            }
        }