zoukankan      html  css  js  c++  java
  • ASP.NET读取配置文件发送邮件

    之前写过一篇文章C#使用SMTP发送邮件

    后来做了改进,改成读取独立的配置文件,本文只记录读取配置文件的部分,发送部分见上面的链接。

    读取配置文件C#代码:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Xml.Serialization;
    using System.Xml;
    using System.IO;
    
    //using log4net;
    //using log4net.Config;
    
    namespace EmailTest.Common
    {
    
        #region SMTPEmailSetting信息
        /// <summary>
        /// SMTPEmailSetting信息
        /// </summary>
        public class SMTPEmailSetting
        {
            /// <summary>
            /// 私有日志对象
            /// </summary>
            //private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    
            private EmailInfo _emailInfo;
            public EmailInfo EmailInfo
            {
                get { return _emailInfo; }
                set { _emailInfo = value; }
            }
    
            #region 模板中的方法
            /// <summary>
            /// 将对象序列化为XML字符串
            /// </summary>
            /// <returns></returns>
            public string ToXml()
            {
    
                StringWriter Output = new StringWriter(new StringBuilder());
                string Ret = "";
    
                try
                {
                    XmlSerializer s = new XmlSerializer(this.GetType());
                    s.Serialize(Output, this);
    
                    // To cut down on the size of the xml being sent to the database, we'll strip
                    // out this extraneous xml.
    
                    Ret = Output.ToString().Replace("xmlns:xsd="http://www.w3.org/2001/XMLSchema"", "");
                    Ret = Ret.Replace("xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"", "");
                    Ret = Ret.Replace("<?xml version="1.0" encoding="utf-16"?>", "").Trim();
                }
                catch (Exception ex)
                {
                    //logger.Error("对象序列化失败!");
                    //logger.Error("异常描述:	" + ex.Message);
                    //logger.Error("异常方法:	" + ex.TargetSite);
                    //logger.Error("异常堆栈:	" + ex.StackTrace);
                    throw ex;
                }
    
                return Ret;
            }
    
            /// <summary>
            /// 将XML字符串中反序列化为对象
            /// </summary>
            /// <param name="Xml">待反序列化的xml字符串</param>
            /// <returns></returns>
            public SMTPEmailSetting FromXml(string Xml)
            {
                StringReader stringReader = new StringReader(Xml);
                XmlTextReader xmlReader = new XmlTextReader(stringReader);
                SMTPEmailSetting obj;
                try
                {
                    XmlSerializer ser = new XmlSerializer(this.GetType());
                    obj = (SMTPEmailSetting)ser.Deserialize(xmlReader);
                }
                catch (Exception ex)
                {
                    //logger.Error("对象反序列化失败!");
                    //logger.Error("异常描述:	" + ex.Message);
                    //logger.Error("异常方法:	" + ex.TargetSite);
                    //logger.Error("异常堆栈:	" + ex.StackTrace);
                    throw ex;
                }
                xmlReader.Close();
                stringReader.Close();
                return obj;
            }
    
            /// <summary>
            /// 从xml文件中反序列化对象
            /// </summary>
            /// <param name="xmlFileName">文件名</param>
            /// <returns>反序列化的对象,失败则返回null</returns>
            public SMTPEmailSetting fromXmlFile(string xmlFileName)
            {
                Stream reader = null;
                SMTPEmailSetting obj = new SMTPEmailSetting();
                try
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(SMTPEmailSetting));
                    reader = new FileStream(xmlFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                    obj = (SMTPEmailSetting)serializer.Deserialize(reader);
                    reader.Close();
                }
                catch (Exception ex)
                {
                    //logger.Error("读取配置文件" + xmlFileName + "出现异常!");
                    //logger.Error("异常描述:	" + ex.Message);
                    //logger.Error("引发异常的方法:	" + ex.TargetSite);
                    //logger.Error("异常堆栈:	" + ex.StackTrace);
                    obj = null;
                }
                finally
                {
                    if (reader != null)
                    {
                        reader.Close();
                    }
                }
                return obj;
            }
    
            /// <summary>
            /// 从xml文件中反序列化对象,文件名默认为:命名空间+类名.config
            /// </summary>
            /// <returns>反序列化的对象,失败则返回null</returns>
            public SMTPEmailSetting fromXmlFile()
            {
                string SettingsFileName = this.GetType().ToString() + ".config";
                return fromXmlFile(SettingsFileName);
            }
    
            /// <summary>
            /// 将对象序列化到文件中
            /// </summary>
            /// <param name="xmlFileName">文件名</param>
            /// <returns>布尔型。True:序列化成功;False:序列化失败</returns>
            public bool toXmlFile(string xmlFileName)
            {
                Boolean blResult = false;
    
                if (this != null)
                {
                    Type typeOfObj = this.GetType();
                    //string SettingsFileName = typeOfObj.ToString() + ".config";
    
                    try
                    {
                        XmlSerializer serializer = new XmlSerializer(typeOfObj);
                        TextWriter writer = new StreamWriter(xmlFileName);
                        serializer.Serialize(writer, this);
                        writer.Close();
                        blResult = true;
                    }
                    catch (Exception ex)
                    {
                        //logger.Error("保存配置文件" + xmlFileName + "出现异常!");
                        //logger.Error("异常描述:	" + ex.Message);
                        //logger.Error("引发异常的方法:	" + ex.TargetSite);
                        //logger.Error("异常堆栈:	" + ex.StackTrace);
                    }
                    finally
                    {
                    }
                }
                return blResult;
            }
    
            /// <summary>
            /// 将对象序列化到文件中,文件名默认为:命名空间+类名.config
            /// </summary>
            /// <returns>布尔型。True:序列化成功;False:序列化失败</returns>
            public bool toXmlFile()
            {
                string SettingsFileName = this.GetType().ToString() + ".config";
                return toXmlFile(SettingsFileName);
            }
            #endregion
        }
        #endregion
    
    
        #region 重复的节点对应声明类
        /// <summary>
        /// SMTPEmailSetting节点
        /// </summary>
        public class EmailInfo
        {
            private string _publicEmail;
            public string PublicEmail
            {
                get { return _publicEmail; }
                set { _publicEmail = value; }
            }
    
            private string _publicEmailPwd;
            public string PublicEmailPwd
            {
                get { return _publicEmailPwd; }
                set { _publicEmailPwd = value; }
            }
    
            private string _publicEmailSMTPURL;
            public string PublicEmailSMTPURL
            {
                get { return _publicEmailSMTPURL; }
                set { _publicEmailSMTPURL = value; }
            }
    
            private string _publicEmailTitle;
            public string PublicEmailTitle
            {
                get { return _publicEmailTitle; }
                set { _publicEmailTitle = value; }
            }
    
            private string _publicEmailContent;
            public string PublicEmailContent
            {
                get { return _publicEmailContent; }
                set { _publicEmailContent = value; }
            }
        }
        #endregion
    
    }

     配置文件示例:

    <?xml version="1.0" encoding="utf-8" ?>
    <SMTPEmailSetting>
        <EmailInfo>
            <PublicEmail>yourEmail@sina.com</PublicEmail>
            <PublicEmailPwd>yourPWD</PublicEmailPwd>
            <PublicEmailSMTPURL>smtp.sina.com</PublicEmailSMTPURL>
            <PublicEmailTitle>“{0}”</PublicEmailTitle>
            <PublicEmailContent>{0}</PublicEmailContent>
        </EmailInfo>
    </SMTPEmailSetting>

    使用示例:

    SMTPEmailSetting emailSetting = new SMTPEmailSetting().fromXmlFile(Server.MapPath("SMTPEmailSetting.config"));
    string returnStr = SMTPEmail.SendEmail(lblEmail.Text, new Hashtable(),
                    string.Format(emailSetting.EmailInfo.PublicEmailTitle, txtTitle.Text.Trim()),
                    string.Format(emailSetting.EmailInfo.PublicEmailContent, txtRemark.Text),
                    emailSetting.EmailInfo.PublicEmail,
                    emailSetting.EmailInfo.PublicEmailPwd,
                    emailSetting.EmailInfo.PublicEmailSMTPURL);

    其他思路,使用web.config的外部文件(避免修改导致程序重启session丢失),参见http://msdn.microsoft.com/zh-cn/library/ms228154(v=vs.100).aspx

    示例:

    <appSettings
       file="relative file name" >
    </appSettings>
  • 相关阅读:
    工作中遇到的java 内存溢出,问题排查
    java线上内存溢出问题排查步骤
    性能测试-java内存溢出问题排查
    164 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 04 终止finally执行的方法
    163 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 03 使用多重catch结构处理异常
    162 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 02 使用try-catch结构处理异常
    161 01 Android 零基础入门 03 Java常用工具类01 Java异常 04 使用try…catch…finally实现异常处理 01 try-catch-finally简介
    160 01 Android 零基础入门 03 Java常用工具类01 Java异常 03 异常处理简介 01 异常处理分类
    159 01 Android 零基础入门 03 Java常用工具类01 Java异常 02 异常概述 02 异常分类
    158 01 Android 零基础入门 03 Java常用工具类01 Java异常 02 异常概述 01 什么是异常?
  • 原文地址:https://www.cnblogs.com/xuezhizhang/p/3421437.html
Copyright © 2011-2022 走看看