コード例 #1
0
ファイル: UtilMail.cs プロジェクト: myungtw/TheNewOne
        public static void SendMail(string strSubject, string strAddMailTo, string strMailInfo, int intRetVal, string strErrMsg)
        {
            StringBuilder pl_sbMailInfo = null;
            StringBuilder pl_sbMailBody = null;
            HttpContext   pl_objCtx     = null;
            MailMessage   pl_objMessage = null;
            SmtpClient    pl_objClient  = null;

            string pl_strMailSuject = string.Empty;
            string pl_strIPAddr     = string.Empty;

            try
            {
                pl_sbMailInfo = new StringBuilder();
                pl_sbMailBody = new StringBuilder();

                pl_objCtx    = HttpContext.Current;
                pl_strIPAddr = UserGlobal.GetClientIP();

                pl_strMailSuject = string.Format("[{0}][{1}][{2}]-{3}", Dns.GetHostName().ToUpper(), "FamilyEvent", strSubject, pl_objCtx.Request.ServerVariables.Get("HTTP_HOST") + pl_objCtx.Request.FilePath.ToString());

                pl_sbMailInfo.Append("<B>Server</B><BR/>");
                pl_sbMailInfo.AppendFormat("ServerName: {0}", pl_objCtx.Request.ServerVariables.Get("HTTP_HOST"));
                pl_sbMailInfo.AppendFormat("<br>ServerIP: {0}", pl_objCtx.Request.ServerVariables.Get("LOCAL_ADDR"));
                pl_sbMailInfo.AppendFormat("<br>RemoteIP: {0}", pl_strIPAddr);
                pl_sbMailInfo.Append("<BR/>");
                if (!string.IsNullOrEmpty(strMailInfo))
                {
                    pl_sbMailInfo.Append(strMailInfo);
                }
                pl_sbMailInfo.Append("<BR/>");
                pl_sbMailInfo.Append("<BR/><B>Error Code</B><BR/>");
                pl_sbMailInfo.Append(intRetVal);
                pl_sbMailInfo.Append("<BR/><B>Error Message</B><BR/>");
                pl_sbMailInfo.Append(strErrMsg);

                // --------------------------------------------------
                // To let the page finish running we clear the error
                // --------------------------------------------------
                pl_sbMailBody.Append("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'>");
                pl_sbMailBody.Append("<HTML>");
                pl_sbMailBody.Append("    <HEAD>");
                pl_sbMailBody.Append("        <META HTTP-EQUIV='Content-Type' Content='text/html; charset=ks_c_5601-1987'>");
                pl_sbMailBody.Append("        <STYLE type='text/css'>");
                pl_sbMailBody.Append("          BODY { font: 9pt/12pt Tahoma }");
                pl_sbMailBody.Append("          H1 { font: 13pt/15pt Tahoma }");
                pl_sbMailBody.Append("          H2 { font: 9pt/12pt Tahoma }");
                pl_sbMailBody.Append("          A:link { color: red }");
                pl_sbMailBody.Append("          A:visited { color: maroon }");
                pl_sbMailBody.Append("        </STYLE>");
                pl_sbMailBody.Append("    </HEAD>");
                pl_sbMailBody.Append("    <BODY>");
                pl_sbMailBody.Append("        <TABLE width=500 border=0 cellspacing=10>");
                pl_sbMailBody.Append("            <TR>");
                pl_sbMailBody.Append("                <TD>");
                pl_sbMailBody.Append(pl_sbMailInfo);
                pl_sbMailBody.Append("                </TD>");
                pl_sbMailBody.Append("            </TR>");
                pl_sbMailBody.Append("        </TABLE>");
                pl_sbMailBody.Append("    </BODY>");
                pl_sbMailBody.Append("</HTML>");

                pl_objMessage      = new MailMessage();
                pl_objMessage.From = new MailAddress(UserGlobal.BOQ_ADDRESS_FROM, UserGlobal.BOQ_ADDRESS_FROM);
                pl_objMessage.To.Add(UserGlobal.BOQ_ADDRESS_TO);
                //추가 주소가 있는 경우
                if (!string.IsNullOrEmpty(strAddMailTo))
                {
                    foreach (string pl_strMailTo in strAddMailTo.Split(';'))
                    {
                        pl_objMessage.To.Add(pl_strMailTo);
                    }
                }
                pl_objMessage.BodyEncoding    = Encoding.UTF8;
                pl_objMessage.SubjectEncoding = Encoding.UTF8;
                pl_objMessage.Subject         = pl_strMailSuject;
                pl_objMessage.Body            = pl_sbMailBody.ToString();
                pl_objMessage.IsBodyHtml      = true;

                if (string.IsNullOrEmpty(UserGlobal.BOQ_SMTP_ID))
                {
                    pl_objClient = new SmtpClient(UserGlobal.BOQ_SMTP_SERVER);
                }
                else
                {
                    pl_objClient = new SmtpClient(UserGlobal.BOQ_SMTP_SERVER);
                    pl_objClient.UseDefaultCredentials = false;
                    pl_objClient.DeliveryMethod        = SmtpDeliveryMethod.Network;
                    pl_objClient.Credentials           = new NetworkCredential(UserGlobal.BOQ_SMTP_ID, UserGlobal.BOQ_SMTP_PWD);
                }

                pl_objClient.Send(pl_objMessage);
            }
            catch (SmtpException pl_objEx)
            {
                UtilLog.WriteExceptionLog(pl_objEx.Message, pl_objEx.StackTrace);
            }
            finally
            {
                pl_sbMailInfo = null;
                pl_sbMailBody = null;
                pl_objCtx     = null;

                if (pl_objMessage != null)
                {
                    pl_objMessage.Dispose();
                    pl_objMessage = null;
                }

                if (pl_objClient != null)
                {
                    pl_objClient.Dispose();
                    pl_objClient = null;
                }
            }
        }