全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#发送邮箱实现代码

之前自己从来没有做过发送邮箱的功能,前段时间项目需要,在找了很多帖子之后,终于实现了。

之后有整理了一下,写了一个类。直接给类传递信息,就可以发送了。

这里还需要说明的是,发送邮箱需要开通POP3/SMTP服务,否则QQ邮箱,网易邮箱等会报错。接收的邮箱就不用开通啦,开通方法百度一下就知道啦。

public static class EmailHelper
  {
    /// <summary>
    /// 发送邮件
    /// </summary>
    /// <param name="subject">邮件主题</param>
    /// <param name="msg">邮件内容</param>
    /// <param name="filePath">附件地址,如果不添加附件传null或""</param>
    /// <param name="senderEmail">发送人邮箱地址</param>
    /// <param name="senderPwd">发送人邮箱密码</param>
    /// <param name="recipientEmail">接收人邮箱</param>
    public static void SendMail(string subject, string msg, string filePath, string senderEmail, string senderPwd, params string[] recipientEmail)
    {
      if (!CheckIsNotEmptyOrNull(subject, msg, senderEmail, senderPwd) || recipientEmail == null || recipientEmail.Length == 0)
      {
        throw new Exception("输入信息无效");
      }
      try
      {
        string[] sendFromUser = senderEmail.Split('@');

        //构造一个Email的Message对象
        MailMessage message = new MailMessage();

        //确定smtp服务器地址。实例化一个Smtp客户端
        System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("smtp." + sendFromUser[1]);

        //构造发件人地址对象
        message.From = new MailAddress(senderEmail, sendFromUser[0], Encoding.UTF8);

        //构造收件人地址对象
        foreach (string userName in recipientEmail)
        {
          message.To.Add(new MailAddress(userName, userName.Split('@')[0], Encoding.UTF8));
        }

        if (!string.IsNullOrEmpty(filePath))
        {
          Attachment attach = new Attachment(filePath);
          //得到文件的信息
          ContentDisposition disposition = attach.ContentDisposition;
          disposition.CreationDate = System.IO.File.GetCreationTime(filePath);
          disposition.ModificationDate = System.IO.File.GetLastWriteTime(filePath);
          disposition.ReadDate = System.IO.File.GetLastAccessTime(filePath);
          //向邮件添加附件
          message.Attachments.Add(attach);
        }

        //添加邮件主题和内容
        message.Subject = subject;
        message.SubjectEncoding = Encoding.UTF8;
        message.Body = msg;
        message.BodyEncoding = Encoding.UTF8;

        //设置邮件的信息
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        message.BodyEncoding = System.Text.Encoding.UTF8;
        message.IsBodyHtml = false;

        //如果服务器支持安全连接,则将安全连接设为true。
        //gmail,qq支持,163不支持
        switch (sendFromUser[1])
        {
          case "gmail.com":
          case "qq.com":
            client.EnableSsl = true;
            break;
          default:
            client.EnableSsl = false;
            break;
        }

        //设置用户名和密码。
        client.UseDefaultCredentials = false;
        //用户登陆信息
        NetworkCredential myCredentials = new NetworkCredential(senderEmail, senderPwd);
        client.Credentials = myCredentials;
        //发送邮件
        client.Send(message);
      }
      catch (Exception ex)
      {
        throw (ex);
      }
    }

    /// <summary>
    /// 验证所有传入字符串不能为空或null
    /// </summary>
    /// <param name="ps">参数列表</param>
    /// <returns>都不为空或null返回true,否则返回false</returns>
    public static bool CheckIsNotEmptyOrNull(params string[] ps)
    {
      if (ps != null)
      {
        foreach (string item in ps)
        {
          if (string.IsNullOrEmpty(item)) return false;
        }
        return true;
      }
      return false;
    }
  }

直接调用方法,传递需要发送的信息,就可以发送邮箱了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# C#  # 发送邮箱  # C# 邮箱mail 发送类  # c#调用qq邮箱smtp发送邮件修改版代码分享  # 获取外网IP并发送到指定邮箱的vbs代码[已测]  # Java基于JavaMail实现向QQ邮箱发送邮件  # Python实现给qq邮箱发送邮件的方法  # 使用vbs获得外网ip并发送到邮箱里  # VBS获取外网IP地址并发送到指定邮箱的代码  # 在Laravel框架里实现发送邮件实例(邮箱验证)  # java实现163邮箱发送邮件到qq邮箱成功案例  # 发送邮件  # 就可以  # 为空  # 送人  # 的是  # 都不  # 设为  # 从来没有  # 做过  # 找了  # 写了  # 还需要  # 不支持  # 网易  # 报错  # 送了  # 前段时间  # 用户登陆  # 大家多多  # 则将 


相关文章: 如何在西部数码注册域名并快速搭建网站?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  建站之星ASP如何实现CMS高效搭建与安全管理?  如何快速搭建高效可靠的建站解决方案?  如何通过多用户协作模板快速搭建高效企业网站?  如何用PHP快速搭建CMS系统?  如何使用Golang table-driven基准测试_多组数据测量函数效率  宁波免费建站如何选择可靠模板与平台?  自助网站制作软件,个人如何自助建网站?  Android自定义listview布局实现上拉加载下拉刷新功能  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何实现建站之星域名转发设置?  如何配置WinSCP新建站点的密钥验证步骤?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何快速重置建站主机并恢复默认配置?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  浅谈Javascript中的Label语句  建站之星2.7模板快速切换与批量管理功能操作指南  如何选择网络建站服务器?高效建站必看指南  简历在线制作网站免费版,如何创建个人简历?  如何选择美橙互联多站合一建站方案?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何在企业微信快速生成手机电脑官网?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  Swift中循环语句中的转移语句 break 和 continue  山东云建站价格为何差异显著?  如何通过商城自助建站源码实现零基础高效建站?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  建站主机选择指南:服务器配置与SEO优化实战技巧  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  如何通过WDCP绑定主域名及创建子域名站点?  C#怎么使用委托和事件 C# delegate与event编程方法  南宁网站建设制作定制,南宁网站建设可以定制吗?  郑州企业网站制作公司,郑州招聘网站有哪些?  黑客如何通过漏洞一步步攻陷网站服务器?  高防服务器租用指南:配置选择与快速部署攻略  制作网站的模板软件,网站怎么建设?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何通过虚拟机搭建网站?详细步骤解析  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  盘锦网站制作公司,盘锦大洼有多少5G网站?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  如何在阿里云香港服务器快速搭建网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何快速查询网址的建站时间与历史轨迹? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。