首页 > 编程 > C# > 正文

C#发送邮箱实现代码

2019-10-29 21:16:09
字体:
来源:转载
供稿:网友

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

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

这里还需要说明的是,发送邮箱需要开通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;    }  }

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

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


注:相关教程知识阅读请移步到c#教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表