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

本文介绍如何使用C#实现SMTP邮件的发送功能,包括通过web.config/App.config配置文件读取邮件发送所需的参数,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
            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;
            }
           
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值