C#简单邮件群发通用类

本文实例为大家介绍了C#邮件群发通用类,供大家参考,具体内容如下

public static class Email
  {
    /// <summary>
    /// 发件人
    /// </summary>
    public static string mailFrom { get; set; }

    /// <summary>
    /// 收件人
    /// </summary>
    public static string[] mailToArray { get; set; }

    /// <summary>
    /// 抄送
    /// </summary>
    public static string[] mailCcArray { get; set; }

    /// <summary>
    /// 标题
    /// </summary>
    public static string mailSubject { get; set; }

    /// <summary>
    /// 正文
    /// </summary>
    public static string mailBody { get; set; }

    /// <summary>
    /// 发件人密码
    /// </summary>
    public static string mailPwd { get; set; }

    /// <summary>
    /// SMTP邮件服务器
    /// </summary>
    public static string host { get; set; }  

    /// <summary>
    /// 邮件服务器端口
    /// </summary>
    public static int port { get; set; }

    /// <summary>
    /// 正文是否是html格式
    /// </summary>
    public static bool isbodyHtml { get; set; }

    /// <summary>
    /// 附件
    /// </summary>
    public static string[] attachmentsPath { get; set; }

    public static bool Send()
    {
      //使用指定的邮件地址初始化MailAddress实例
      MailAddress maddr = new MailAddress(mailFrom);

      //初始化MailMessage实例
      MailMessage myMail = new MailMessage();

      //向收件人地址集合添加邮件地址
      if (mailToArray != null)
      {
        for (int i = 0; i < mailToArray.Length; i++)
        {
          myMail.To.Add(mailToArray[i].ToString());
        }
      }

      //向抄送收件人地址集合添加邮件地址
      if (mailCcArray != null)
      {
        for (int i = 0; i < mailCcArray.Length; i++)
        {
          myMail.CC.Add(mailCcArray[i].ToString());
        }
      }
      //发件人地址
      myMail.From = maddr;

      //电子邮件的标题
      myMail.Subject = mailSubject;

      //电子邮件的主题内容使用的编码
      myMail.SubjectEncoding = Encoding.UTF8;

      //电子邮件正文
      myMail.Body = mailBody;

      //电子邮件正文的编码
      myMail.BodyEncoding = Encoding.Default;

      //电子邮件优先级
      myMail.Priority = MailPriority.High;

      //电子邮件不是html格式
      myMail.IsBodyHtml = isbodyHtml;

      //在有附件的情况下添加附件
      try
      {
        if (attachmentsPath != null && attachmentsPath.Length > 0)
        {
          Attachment attachFile = null;
          foreach (string path in attachmentsPath)
          {
            attachFile = new Attachment(path);
            myMail.Attachments.Add(attachFile);
          }
        }
      }
      catch (Exception err)
      {
        throw new Exception("在添加附件时有错误:" + err.Message);
      }

      SmtpClient client = new SmtpClient();

      //指定发件人的邮件地址和密码以验证发件人身份
      client.Credentials = new NetworkCredential(mailFrom, mailPwd);

      //设置SMTP邮件服务器
      //client.Host = "smtp." + myMail.From.Host;
      client.Host = host;

      //SMTP邮件服务器端口
      client.Port = port;

      //是否使用安全连接
      //client.EnableSsl = true;

      try
      {
        //将邮件发送到SMTP邮件服务器
        client.Send(myMail);
        return true;
      }
      catch (SmtpException ex)
      {
        string msg = ex.Message;
        return false;
      }

    }

希望本文所述对大家学习C#程序设计有所帮助。

(0)

相关推荐

  • C#中使用XmlDocument类来创建和修改XML格式的数据文件

    通过XmlDocument类修改XML文档数据,通常需要以下几个主要步骤或其中几个步骤. (1)获取一个包含XML文档数据的XmlDocument类对象,通常有两种方法来实现这个功能: 通过XmlDocument类的构造函数创建不包含任何结点的空对象,常用默认构造函数. (2)通过XmlDocument类的ChildNodes和Item属性获取某个结点(XmlNode类型),通过XmlNode的Name.Value.InnerText等属性修改选中结点的数据. (3)通过XmlDocument类

  • 分享C#中几个可用的类

    本文实例为大家介绍了几个可用的类,供大家参考,具体内容如下 1.SQLHelper类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; using System.Configuration; namespace MySchool.DAL { public static class

  • C#使用Process类调用外部exe程序

    在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法.在C#中,通过Process类来进行进程操作. Process类在System.Diagnostics包中. 示例一 复制代码 代码如下: using System.Diagnostics; Process p = Process.Start("notepad.exe"); p.WaitForExit();//关键,等待外部程序退出后才能往下执行 通过上述代码可以调用记事本程序,注意如果不是调用系统程序,

  • C#编程中枚举类型的使用教程

    枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法.例如,假设您必须定义一个变量,该变量的值表示一周中的一天.该变量只能存储七个有意义的值.若要定义这些值,可以使用枚举类型.枚举类型是使用 enum关键字声明的. enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; enum Months : byte { Jan, Feb, Mar, Apr, May, Jun,

  • 结合.net框架在C#派生类中触发基类事件及实现接口事件

    在派生类中引发基类事件 以下简单示例演示了在基类中声明可从派生类引发的事件的标准方法.此模式广泛应用于 .NET Framework 类库中的 Windows 窗体类. 在创建可用作其他类的基类的类时,应考虑如下事实:事件是特殊类型的委托,只可以从声明它们的类中调用.派生类无法直接调用基类中声明的事件.尽管有时需要事件仅由基类引发,但在大多数情形下,应该允许派生类调用基类事件.为此,您可以在包含该事件的基类中创建一个受保护的调用方法.通过调用或重写此调用方法,派生类便可以间接调用该事件. 注意:

  • C#中的静态成员、静态方法、静态类介绍

    1.静态成员.实例成员 1.1定义及说明 数据成员: 静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问. 实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在. 函数成员: 静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量和静态方法:静态方法不可以直接访问实例变量和实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态

  • C#实现动态生成静态页面的类详解

    本文实例讲述了C#实现动态生成静态页面的类.分享给大家供大家参考,具体如下: 动态生成静态页面有许多好处,比如生成html网页有利于被搜索引擎收录.同时,由于减少了数据访问,减轻对数据库访问的压力,提高了网页打开速度. 基本思路: 使用一个字符串作为页面模板,再页面中包含用若干标志(用 {标志名} 表示),生成页面时,将标志替换为对应的值. 实现方法: 在初始化TextTemplate实例时读入模板,以标志为分割点将模板分割成几部分,生成页面时只需简单的将模板内容和标志的值连接起来.例如: 假如

  • C#使用LINQ中Enumerable类方法的延迟与立即执行的控制

    延时执行的Enumerable类方法 LINQ标准查询运算法是依靠一组扩展方法来实现的.而这些扩展方法分别在System.Linq.Enumerable和System.Linq.Queryable这连个静态类中定义. Enumerable的扩展方法采用线性流程,每个运算法会被线性执行.这种执行方法如果操作类似关系型数据库数据源,效率会非常低下,所以Queryable重新定义这些扩展方法,把LINQ表达式拆解为表达式树,提供程序就可以根据表达式树生成关系型数据库的查询语句,即SQL命令,然后进行相

  • ASP.NET在底层类库中获取Session C#类中获取Session 原创

    类库中获取Session首先要添加引用 获取Session 复制代码 代码如下: string user = (string)HttpContext.Current.Session["user"]; 获取Page 复制代码 代码如下: System.Web.UI.Page page = (System.Web.UI.Page)HttpContext.Current.Handler; 获取当前 Request Response 等对象都是在这里 复制代码 代码如下: HttpRespon

  • C#中的委托数据类型简介

    什么是委托? 委托是一个类型安全的对象,它指向程序中另一个以后会被调用的方法(或多个方法).通俗的说,委托是一个可以引用方法的对象,当创建一个委托,也就创建一个引用方法的对象,进而就可以调用那个方法,即委托可以调用它所指的方法. 来看下面的例子,类deleMthod定义了3个方法,add.minus和multi,他们都具有相同的输入参数列表(int x,int y)和输出参数类型int,那么我们就说这三个方法具有相同的方法签名.开发者可以抽象地用 int 某名称(int x,int y) 的一种

随机推荐