邮件提醒功能

 

最近在做项目中遇到了邮件提醒的功能,具体的用户需求是,在平常的高校中,院长发布公告或者任务的时候,接受者不仅可以在学校官网上接受,而且还可以以邮件的形式接受,根据此需求,小编经过两个小时的奋战,终于出结果了,这次也玩转了下关于邮件方面类的操作。

我们也可以试想,平常我们在写邮件的时候,基本上也就是处理上述的几个操作,写写邮件正文、主题,添加下收件人和附件,最后发送操作。

我把所有的操作全部封装到了一个Email类中,以后用的时候,直接调用即可。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Threading;
using System.Threading.Tasks;



/// <summary>
/// Email类,创建了发送邮件和邮件信息的对象操作
/// </summary>
class Email
{

    #region 属性操作
    //163邮箱是smtp.163 QQ是smtp.qq.com
    string Estmp;//smtp服务器
    string Efrom;//发件人地址
    string Epwd;//发件人密码
    string[] Eto;//收件人集合
    string Esubject;//邮件标题
    string Ebody;//邮件正文内容
    //string[] Epath;//附件地址集合 
    #endregion

    #region 构造函数
    /// <summary>
    /// 邮件的构造函数
    /// </summary>
    /// <param name="Esmtp">服务器设置</param>
    /// <param name="Efrom">发件人地址</param>
    /// <param name="Epwd">发件人密码</param>
    /// <param name="Eto">收件人地址</param>
    /// <param name="Esubject">主题</param>
    /// <param name="Ebody">正文</param>
    public Email(string Esmtp, string Efrom, string Epwd, string[] Eto, string Esubject, string Ebody)
    {
        this.Efrom = Efrom;
        this.Estmp = Esmtp;
        this.Epwd = Epwd;
        this.Eto = Eto;
        this.Esubject = Esubject;
        this.Ebody = Ebody;
    } 
    #endregion

    #region 创建一个发送对象的Client
    /// <summary>
    /// 创建一个发送对象的Client
    /// </summary>
    /// <returns></returns>
    public SmtpClient CreateClient()
    {
        //创建smtpClient对象    
        System.Net.Mail.SmtpClient client = new SmtpClient();
        //设定服务器
        client.Host = Estmp;
        //DefaultCredentials 是否随请求一起发送。
        client.UseDefaultCredentials = false;
        //基于身份的验证
        client.Credentials = new System.Net.NetworkCredential(Efrom, Epwd);
        //电子邮件通过网络发送到smtp邮件服务器
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        return client;
    } 
    #endregion

    #region 创建一个MailMessage对象
    /// <summary>
    /// 创建一个MailMessage对象
    /// </summary>
    /// <returns></returns>
    public MailMessage CreateMessage(string from, string to)
    {
        //创建一个MailMessage对象
        MailMessage message = new MailMessage(from, to);
        //设置信息的正文
        message.Body = Ebody;
        //设置信息的标题
        message.Subject = Esubject;
        //邮件以html格式输出
        message.IsBodyHtml = true;
        //邮件的正文格式为UTF8
        message.BodyEncoding = System.Text.Encoding.UTF8;
        return message;
    } 
    #endregion

    #region 发送邮件操作
    /// <summary>
    /// 发送邮件方法
    /// </summary>
    /// <returns></returns>
    public bool SendMail()
    {
        for (int i = 0; i < Eto.Length; i++)
        {
            SmtpClient Client = CreateClient();
           
            Client.Send(CreateMessage(Efrom, Eto[i]));
        }
        return true;
    } 
    #endregion

}

看一下客户端是如何调用的。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Mail;
/// <summary>
/// 测试类
/// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //收件人地址集合
            string [] a={ "XXXXXX@QQ.COM"};
            Email email = new Email("smtp.163.com", "发件人地址", "发件人密码",a, "你好吗", "我很好");
            //发送邮件操作
            email.SendMail();                   
            Console.WriteLine("发送成功");
        }
    }


总结

本来上述发送的过程是可以采取异步的形式进行优化的,但是小编调试了很久,不知道问题出在哪里,有知情者,可以相互学习一下。


  • 0
    点赞
  • 20
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值