ふるすたっくえんじにあっぽい人の日記

ASP .NET MVC (C#)、.NET Framework、iOS (Objective-c) アプリ、Androidアプリ (Java)、AWS、たまにLAMPとかプロジェクトマネジメントあたりのお話

【C#】メール送信!

晒す第二弾

実際はこれをさらにラップして使っております。

using System.Net;
using System.Net.Mail;

namespace Hoge.Util
{
    public static class MailUtil
    {
        /// <summary>
        /// メールを送信します。
        /// </summary>
        /// <param name="message">メールメッセージ情報</param>
        public static void SendMail(MessageStruct message)
        {
            using (var smtpClient = new SmtpClient(message.Host))
            {
                smtpClient.Port = message.Port;
                smtpClient.EnableSsl = message.EnableSSL;
                smtpClient.Timeout = message.TimeOut;

                if (!string.IsNullOrEmpty(message.User))
                    smtpClient.Credentials = new NetworkCredential(message.User, message.Password);

                using (var mailMessage = new MailMessage(message.From, message.To, message.Subject, message.Body))
                {
                    smtpClient.Send(mailMessage);
                }
            }
        }
    }

    /// <summary>
    /// メールメッセージ構造体
    /// </summary>
    public struct MessageStruct
    {
        /// <summary>
        /// Hostを取得・設定します。
        /// </summary>
        public string Host { get; set; }

        /// <summary>
        /// Portを取得・設定します。
        /// </summary>
        public int Port { get; set; }

        /// <summary>
        /// SSLが有効かどうかを取得・設定します。
        /// </summary>
        public bool EnableSSL { get; set; }

        /// <summary>
        /// メール送信処理のタイムアウトを秒単位で取得・設定します。
        /// </summary>
        public int TimeOut { get; set; }

        /// <summary>
        /// メールアカウントのユーザー名を取得・設定します。
        /// </summary>
        public string User { get; set; }

        /// <summary>
        /// メールアカウントのパスワードを取得・設定します。
        /// </summary>
        public string Password { get; set; }
        
        /// <summary>
        /// Fromを取得・設定します。
        /// </summary>
        public string From { get; set; }

        /// <summary>
        /// Toを取得・設定します。
        /// </summary>
        public string To { get; set; }

        /// <summary>
        /// 件名を取得・設定します。
        /// </summary>
        public string Subject { get; set; }

        /// <summary>
        /// 本文を取得・設定します。
        /// </summary>
        public string Body { get; set; }
    }
}