首页 > 其他 > 详细

邮件提醒功能

时间:2014-12-13 16:29:40      阅读:279      评论:0      收藏:0      [点我收藏+]

 

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

bubuko.com,布布扣

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

我把所有的操作全部封装到了一个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("发送成功");
        }
    }


总结

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


邮件提醒功能

原文:http://blog.csdn.net/luckyzhoustar/article/details/41910585

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!