본문 바로가기
C#

C#] 메일발송 클래스

by Fastlane 2021. 9. 9.
728x90
반응형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Web;

namespace Helper
{
    public class Email
    {

        #region SendSimpleMail - Easy Form 메일 전송
        /// <summary>
        /// Simple Email 발송
        /// </summary>
        /// <param name="fromAddress">보내는사람 메일주소</param>
        /// <param name="toAddress">받는사람 메일주소</param>
        /// <param name="textSubject">email 제목</param>
        /// <param name="textContent">email 내용</param>
        /// <param name="isBodyHtml">true:HTML사용 / false:HTML미사용</param>
        /// <returns></returns>
        public Boolean SendSimpleMail(string fromAddress, string fromName, string toAddress, string textSubject, string textContent, bool isBodyHtml)
        {
            MailMessage mail = new MailMessage();

            try
            {
                // [보내는 사람 설정] 
                mail.From = new MailAddress(fromAddress.ToString(), fromName, System.Text.Encoding.UTF8);

                // [받는 사람 설정] 
                mail.To.Add(toAddress);

                // [제목 설정] 
                mail.Subject = textSubject;
                mail.SubjectEncoding = System.Text.Encoding.UTF8;

                // [내용 설정] 
                mail.Body = textContent;
                mail.BodyEncoding = System.Text.Encoding.Default;

                // [HTML 사용 설정] 
                mail.IsBodyHtml = isBodyHtml;

                // [메일 발송] 시작
                SmtpClient smtp = new SmtpClient("127.0.0.1");
                
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.UseDefaultCredentials = true;

                #region SmtpClient 세팅방법
                // 로컬서버에 SMTP 서비스가 설정되어 있어야 하며, 엑세스>릴레이제한>릴레이에서
                // '아래 목록만' : 선택 // 추가 -> 127.0.0.1
                // 위 목록과 상관없이 성공적으로 인증한 모든 컴퓨터에 릴레이 가능 : 체크해제 
                #endregion

                smtp.Send(mail);
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
            // [메일 발송] 끝
        }
        #endregion

        #region fctSendMultiMail - Multi Email 발송
        /// </summary>
        /// <param name="fromAddress">보내는사람 메일주소</param>
        /// <param name="toAddrS">받는사람 메일주소 배열</param>
        /// <param name="textSubject">email 제목</param>
        /// <param name="textContent">email 내용</param>
        /// <param name="isBodyHtml">true:HTML사용 / false:HTML미사용</param>
        /// <returns></returns>
        public string SendMultiMail(string fromAddress, string fromName, List<String> toAddrS, List<String> toRefS, string textSubject, string textContent, bool isBodyHtml)
        {
            MailMessage mail = new MailMessage();

            try
            {
                //int intIdx;
                //String[] splittedAddr = toAddrS.ToArray();

                // [보내는 사람 설정] 
                mail.From = new MailAddress(fromAddress.ToString(), fromName, System.Text.Encoding.UTF8);

                // [제목 설정] 
                mail.Subject = textSubject;
                mail.SubjectEncoding = System.Text.Encoding.UTF8;

                // [내용 설정] 
                mail.Body = textContent;
                mail.BodyEncoding = System.Text.Encoding.Default;

                // [HTML 사용 설정] 
                mail.IsBodyHtml = isBodyHtml;

                SmtpClient smtp = new SmtpClient("127.0.0.1");
                
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.UseDefaultCredentials = true;

                #region SmtpClient 세팅방법
                // 로컬서버에 SMTP 서비스가 설정되어 있어야 하며, 엑세스>릴레이제한>릴레이에서
                // '아래 목록만' : 선택 // 추가 -> 127.0.0.1
                // 위 목록과 상관없이 성공적으로 인증한 모든 컴퓨터에 릴레이 가능 : 체크해제 
                #endregion

                Int32 mailCount = 0;
                foreach (var toAddr in toAddrS ?? (new List<String>()))
                {
                    if (toAddr.Length > 0)
                    {
                        mail.To.Add(toAddr);
                        mailCount++;
                    }
                }

                foreach (var toRef in toRefS ?? (new List<String>()))
                {
                    if (toRef.Length > 0)
                    {
                        mail.CC.Add(toRef);
                        mailCount++;
                    }
                }

                if (mailCount > 0)
                {
                    smtp.Send(mail);
                }

                return "";
            }
            catch (Exception e)
            {
                // [메일 발송실패] 
                return e.InnerException.Message;
            }
            // [메일 발송] 끝
        }
        #endregion
    }
}
728x90
반응형

댓글