您的位置:首页 > 移动开发

C#编写的邮件(Mail)发送发送人的信息从web.config或者从Appp.congfig中获取的方法

2013-10-27 18:40 561 查看
1.webform应用程序.

    首先写一个邮件发送的方法

      

 /// 使用SMTP发送邮件

        /// </summary>

        /// <param name="smtpHost">smtp服务器信息,格式:Host:Port,Port可省略,采用默认端口25</param>

        /// <param name="attach">附件的地址</param>

        /// <param name="UserName">smtp服务器登录用户名</param>

        /// <param name="UserPass">smtp服务器登录密码</param>

        /// <param name="MailName">发件人昵称</param>

        /// <param name="MailFrom">发件人</param>

        /// <param name="MailTo">收件人,多个可使用,分隔</param>

        /// <param name="strTitle">邮件主题</param>

        /// <param name="strBody">邮件内容</param>

        /// <param name="isHTML">是否为HTML邮件</param>

        /// <returns>发送状态</returns>

        public static bool sendMail(string smtpHost, Attachment[] attach, string UserName, string UserPass, string MailName, string         MailFrom, string MailTo, string strTitle, string strBody, bool isHTML)

        {

            System.Net.Mail.MailMessage objMsg = new System.Net.Mail.MailMessage();

            objMsg.From = new System.Net.Mail.MailAddress(MailFrom, MailName);

            objMsg.To.Add(MailTo);

            objMsg.Subject = strTitle;

            objMsg.IsBodyHtml = isHTML;

            objMsg.BodyEncoding = System.Text.Encoding.UTF8;

            objMsg.Body = strBody;

            if (attach.Length > 0)

            {

                foreach (var item in attach)

                {

                    objMsg.Attachments.Add(item);
                }

            }

            string[] smtpHostArr = smtpHost.Split(':');

            string smtpHostIPAdd = String.Copy(smtpHost);

            int smtpHostPort = 25;

            if (smtpHostArr.Length >= 2)

            {

                smtpHostIPAdd = toString(smtpHostArr[0].ToString());

                smtpHostPort = toInt(smtpHostArr[1].ToString());

            }

            System.Net.Mail.SmtpClient objSMTP = new System.Net.Mail.SmtpClient();

            objSMTP.Host = smtpHostIPAdd;

            objSMTP.Port = smtpHostPort;

            objSMTP.Credentials = new System.Net.NetworkCredential(UserName, UserPass);

            try

            {

                objSMTP.Send(objMsg);

             

                return true;

            }

            catch

            {

                return false;

            }

            return false;

        }

        #endregion

        #region toInt

        /// <summary>

        ///得到Int类型的值 

        /// </summary>

        /// <param name="v"></param>

        /// <returns></returns>

        public static int toInt(object v)

        {

            int r = 0;

            try

            {

                r = Convert.ToInt32(v);

            }

            catch

            {

                r = 0;

            }

            return r;

        }

        /// <summary>

        /// 

        /// </summary>

        /// <param name="v"></param>

        /// <returns></returns>

        public static int toInt(string v)

        {

            return toInt((object)v);

        }

        #endregion

        #region toString

        /// <summary>

        /// 得到string类型的值

        /// </summary>

        /// <param name="v"></param>

        /// <returns></returns>

        public static string toString(object v)

        {

            string r = "";

            try

            {

                r = Convert.ToString(v);

                if (r == null)

                {

                    throw new Exception("转换之后值异常!", null);

                }

            }

            catch

            {

                r = "";

            }

            return r;

        }

        /// <summary>

        /// 

        /// </summary>

        /// <param name="v"></param>

        /// <returns></returns>

        public static string toString(int v)

        {

            return toString((object)v);

        }

        #endregion

   2.从web.config中获取需要的的信息

    webconfig中的数据是

     <?xml version="1.0"?>

<configuration>

  <system.net>

    <mailSettings>

      <smtp from="用户名@163.com">

        <network host="smtp.163.com" port="25" userName="用户名" password="密码**"/>

      </smtp>

    </mailSettings>

  </system.net>
</configuration>

    发送邮件的方法是:

      

        /// <summary>

        /// 使用SMTP发送邮件,发件人信息保存在Web.Config中。

        /// </summary>

        /// <param name="MailTo">收件人,多个可使用,分隔</param>

        /// <param name="strTitle">邮件主题</param>

        /// <param name="strBody">邮件内容</param>

        /// <param name="isHTML">是否为HTML邮件</param>

        /// <returns>发送状态</returns>

     

        public static bool sendMail(string MailTo,Attachment[] attach,string strTitle, string strBody, bool isHTML)

        {

            string appPath = System.Web.HttpContext.Current.Request.ApplicationPath;

            Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(appPath);

     
97fb
      SmtpSection smtp = (SmtpSection)config.GetSection("system.net/mailSettings/smtp");

            string smtpHost = smtp.Network.Host + ":" + smtp.Network.Port;

            if (smtpHost == null) { return false; }

            string UserName = smtp.Network.UserName;

            if (UserName == null) { return false; }

            string UserPass = smtp.Network.Password;

            if (UserPass == null) { return false; }

            string MailName = "";

            if (MailName == null) { return false; }

            string MailFrom = smtp.From;

            if (MailFrom == null) { return false; }

            return sendMail(smtpHost,attach,UserName, UserPass, MailName, MailFrom, MailTo, strTitle, strBody, isHTML);

        }
3.WinForm中的App.config中获取邮件发送的信息
  App.config中的数据与web.config中的数据相同
 方法如下:

    /// <summary>

        /// 使用SMTP发送邮件,发件人信息保存在Web.Config中。

        /// </summary>

        /// <param name="MailTo">收件人,多个可使用,分隔</param>

        /// <param name="attach">附件的地址</param>

        /// <param name="strTitle">邮件主题</param>

        /// <param name="strBody">邮件内容</param>

        /// <param name="isHTML">是否为HTML邮件</param>

        /// <returns>发送状态</returns>

        public static bool sendMail(string MailTo,Attachment [] attach, string strTitle, string strBody, bool isHTML)

        {

            try

            {
                #region WinForm从app.config中得到发送Mail所需的参数

                System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//OpenExeConfiguration2个方法的参数我也没搞清楚到底该怎么用。

                MailSettingsSectionGroup mailSettings = NetSectionGroup.GetSectionGroup(config).MailSettings;

                string smtpHost = mailSettings.Smtp.Network.Host + ":" + mailSettings.Smtp.Network.Port;

                if (smtpHost == null) { return false; }

                string UserName = mailSettings.Smtp.Network.UserName;

                if (UserName == null) { return false; }

                string UserPass = mailSettings.Smtp.Network.Password;

                if (UserPass == null) { return false; }

                string MailName = "";

                if (MailName == null) { return false; }

                string MailFrom = mailSettings.Smtp.From;

                if (MailFrom == null) { return false; }

                return sendMail(smtpHost,attach, UserName, UserPass, MailName, MailFrom, MailTo, strTitle, strBody, isHTML); 

                #endregion

            

            }

            catch (Exception e)

            {

                string dd = e.Message;

                throw;

            }

           

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# 编码 邮件