c#利用webmail邮件系统发送邮件示例分享

 更新时间:2014年01月20日 16:21:59   作者:  
在C#中发送邮件的方式有2种,一种是使用webmail方式进行发送,另外一种就是采用netmail发送的方式,这篇文章介绍了c#使用webmail方式发送邮件示例,大家参考使用吧

在C#中发送邮件的方式有2种,一种是使用webmail方式进行发送,另外一种就是采用netmail发送的方式,在采用这2种方式发送邮件时,如果采用公用的邮件服务器(如126邮件服务器,Sina的邮件服务器)都是需要授权认证才能够发送,如果是采用Gmail的话,还会有每天发送邮件的数量等限制。这2种方式是经过我测试通过了的代码,只需要将邮件的用户名和密码修改成自己的即可,同时也可以修改邮件服务器,改成自己配置的邮件服务器。

复制代码 代码如下:

/// <summary>
    /// 发送Email(带验证,采用微软新推荐的方式)
    /// </summary>
    /// <param name="strTo">收件Email</param>
    /// <param name="strCc">抄送Email</param>
    /// <param name="strSubject">标题</param>
    /// <param name="strBody">内容</param>
    /// <param name="UserName">邮箱验证帐号(与web.config里配置的帐号要一样)</param>
    /// <param name="from">发信人邮箱,要与UserName对应</param>
    /// <param name="strErrorMsg">错误消息</param>
    /// <returns></returns>
    public static bool WebSendEmail(string strTo, string strCc, string strSubject, string strBody, ref string strErrorMsg)
    {
        System.Web.Mail.MailMessage message = new System.Web.Mail.MailMessage();
        System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");

        bool bState = false;
        string strSMTPServer = "";

        try
        {
            strSMTPServer = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SMTP"]);
            strSMTPServer = strSMTPServer == "" ? "localhost" : strSMTPServer;

            string strFromAddr = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["FromAddress"]);
            if (reg.IsMatch(strFromAddr))
            {
                message.From = strFromAddr;
            }
            else
            {
                throw new Exception("The Email Address is wrong,Please reset the Email Address in the web.config file !");
            }

            string strTemp = "";
            foreach (string str in strTo.Split(';'))
            {
                if (reg.IsMatch(str))
                    if (!strTemp.Contains(str))
                        strTemp += str + ";";
            }

            message.Cc = "";
            foreach (string str in strCc.Split(';'))
            {
                if (reg.IsMatch(str))
                    if (!message.Cc.Contains(str))
                        message.Cc += str + ";";
            }

            message.Subject = strSubject;
            message.BodyFormat = System.Web.Mail.MailFormat.Html;

            message.Body ="<html><body>UtilMailMessage001"+ strBody+"- success</body></html>" ;
            //下面这块是加载附件的方法
            MailAttachment attachment1 =new MailAttachment(@"d:\My Documents\test1.doc");
            MailAttachment attachment2 =new MailAttachment("d:\\Documents\\test2.doc");
            message.Attachments.Add(attachment1);
            message.Attachments.Add(attachment2);

            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
            //这里的邮箱帐号和密码一定要和下面配置文件中设置的邮箱的帐号和密码一致
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "xxxxxxxxx");//邮箱帐号,比如Test11@126.com帐号为:Test11
            message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "xxxxxxxx");//邮箱密码
            //这个是指明邮件服务器的端口,可以不指定
            //message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "25");
    

            foreach (string str in strTemp.Split(';'))
            {
                if (reg.IsMatch(str))
                {
                    message.To = str;
                    message.BodyEncoding = System.Text.Encoding.UTF8;
                    System.Web.Mail.SmtpMail.SmtpServer = strSMTPServer;

                    System.Web.Mail.SmtpMail.Send(message);
                }
            }

            bState = true;
        }
        catch (Exception ex)
        {
            System.IO.File.AppendAllText("C:\\Mail_Log.ini", string.Format("{0:yyyy/MM/dd HH:mm:ss}\r\n{1}\r\n\r\n", DateTime.Now, ex.Message));
            bState = false;
            strErrorMsg = ex.Message;
        }

        return bState;
    }
//测试发送邮件
protected void btnSend_Click(object sender, EventArgs e)
    {
        try
        {

            Email.SendEmail("xxxxxx@163.com", "", "Test Email", "Test Send Email");

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
    }

邮件在webconfig文件中配置如下:

相关文章

  • 大白话讲解C# 中的委托

    大白话讲解C# 中的委托

    这篇文章主要介绍了C# 中的委托的相关资料,帮助初学者更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-11-11
  • 解决winform界面刷新闪烁问题的多种方案

    解决winform界面刷新闪烁问题的多种方案

    这篇文章给大家介绍了如何解决winform界面刷新闪烁问题的多种方案,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • C#通过实现winmm枚举音频设备

    C#通过实现winmm枚举音频设备

    使用C#做音频录制时需要获取音频设备信息,其中比较简单的就是使用winmm,所以本文就为大家介绍一下C#如何通过实现winmm枚举音频设备,需要的可以参考下
    2023-10-10
  • C#引用类型作为方法的参数分析

    C#引用类型作为方法的参数分析

    这篇文章主要介绍了C#引用类型作为方法的参数分析,以实例的形式较为详细的分析了参数的传值问题,需要的朋友可以参考下
    2014-11-11
  • C#实现简单的飞行棋小游戏

    C#实现简单的飞行棋小游戏

    这篇文章主要为大家详细介绍了C#实现简单的飞行棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
    2021-11-11
  • Unity利用UGUI制作提示框效果

    Unity利用UGUI制作提示框效果

    这篇文章主要为大家详细介绍了Unity利用UGUI制作提示框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C#实现的字符串相似度对比类

    C#实现的字符串相似度对比类

    这篇文章主要介绍了C#实现的字符串相似度对比类,本文直接给出类实现代码,代码中包含详细注释,需要的朋友可以参考下
    2015-07-07
  • 基于WPF实现ListBox拖动子项

    基于WPF实现ListBox拖动子项

    这篇文章主要为大家详细介绍了如何基于WPF实现ListBox拖动子项效果,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考下
    2024-04-04
  • C#拷贝整个文件夹及子目录和其中文件的方法

    C#拷贝整个文件夹及子目录和其中文件的方法

    这篇文章主要介绍了C#拷贝整个文件夹以及子目录和其中文件,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • C# 设计模式系列教程-状态模式

    C# 设计模式系列教程-状态模式

    状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。
    2016-06-06

最新评论