自动发送邮件三种方式

22 篇文章 0 订阅

一、sql触发器发送

二、winform程序后用任务计划发送

页面

 //引用
using System.Data.Common;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Net.Mail;

 //要发送的邮件
        public static DataSet SendEmailList()
        {
            DataSet ds = new DataSet();
            try
            {
                string str = ConfigurationSettings.AppSettings["ConnectionString"];
                SqlConnection conn = new SqlConnection(str);
                conn.Open();
                SqlCommand comm = new SqlCommand("SendEmailList", conn);
                comm.CommandType = CommandType.StoredProcedure;
                comm.ExecuteNonQuery();
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = comm;
                da.Fill(ds);
                conn.Close();

            }
            catch (Exception ex) { }
            return ds;
        }
        public static bool SendMail(string form, string toMail, string title, string body, string SendEmailID)
        {
            bool result = false;

            try
            {
                MailMessage email = new MailMessage();
                email.From = new MailAddress(form);
                //收件人
                email.To.Add(toMail);
                //主题
                email.Subject = title;
                //内容
                email.Body = body;
                //优先级
                email.Priority = MailPriority.Normal;
                //内容类型
                email.IsBodyHtml = true;
                SmtpClient client = new SmtpClient();
                client.Send(email);
                //再把状态改一下
                string str = ConfigurationSettings.AppSettings["ConnectionString"].ToString();
                SqlConnection conn = new SqlConnection(str);
                conn.Open();
                SqlCommand comm = new SqlCommand("SendEmailDelete", conn);
                //参数SendEmailID
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.Add(new SqlParameter("@SendEmailID", SqlDbType.NVarChar, 50));
                comm.Parameters["@SendEmailID"].Value = SendEmailID.ToString();

                comm.ExecuteNonQuery();

                result = true;
            }
            catch (Exception ex)
            {
                result = false;
            }

            return result;
        }

webconfig页面配置

<appSettings>
  <!--邮箱-->
  <add key="ConnectionString" value="data source=10.*.*;Initial Catalog="数据库";user id=用户;password=密码"/>

  <add key="UserEmail" value="l222@126.com"/>
 </appSettings>
 <system.net>
  <mailSettings>
   <smtp deliveryMethod="Network">
    <!--正式邮件配置-->
    <network host="smtp.126.com" password="密码" userName="122@126.com" port="25"></network>
   </smtp>
  </mailSettings>
 </system.net>

 

配置程序

开始----程序----附件---系统工具---任务计划,双击添加任务,选择程序文件-----(程序生成的*.exe),管理员输入密码为登录密码,一直点下一步就行了

三、global

缺点,有人访问页面时,global才会运行

webconfig页面配置

<connectionStrings>
  <add  name="ConnectionString" connectionString="Data Source=./SQLExpress;Initial Catalog=数据库;
   Trusted_Connection=yes; " providerName="System.Data.SqlClient"/>
 </connectionStrings>
 <appSettings>
  <!--邮箱-->
  <add key="UserEmail" value="2112@126.com"/>
 </appSettings>
 <system.net>
  <mailSettings>
   <smtp deliveryMethod="Network">
    <!--正式邮件配置-->
    <network host="smtp.126.com" password="password" userName="l424@126.com" port="25"></network>
   </smtp>
  </mailSettings>
 </system.net>

global页面

 void Application_Start(object sender, EventArgs e)
    {
        // 在应用程序启动时运行的代码
        Timer t = new Timer(60000);//设计时间间隔,如果一个小时执行一次就改为3600000 ,这里一分钟调用一次
        t.Elapsed += new ElapsedEventHandler(t_Elapsed);
        t.AutoReset = true;
        t.Enabled = true;

    }
    private void t_Elapsed(object sender, ElapsedEventArgs e)
    {
        Response.Write("执行成功");
        //查询数据库
        DataSet ds = Common.SendEmailList();
        string FormEmail = ConfigurationManager.AppSettings["UserEmail"];
        string title = "会员申请网上注册失败";

        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            string ToEmail = ds.Tables[0].Rows[i]["EmailAddress"].ToString();
            string body = "你的网上注册失败,错误原因:";
            body += ds.Tables[0].Rows[i]["Cause"].ToString() + "<br/>";
            body += "请查看资料修正";
            string SendEmailID = ds.Tables[0].Rows[i]["SendEmailID"].ToString();
            Common.SendMail(FormEmail, ToEmail, title, body, SendEmailID);
        }
    }

winform页面

//引用
using System.Data.Common;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Net.Mail;

  //要发送的邮件
    public static DataSet SendEmailList()
    {
        DataSet ds = new DataSet();
        try
        {

            string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conn = new SqlConnection(str);
            conn.Open();
            SqlCommand comm = new SqlCommand("SendEmailList", conn);
            comm.CommandType = CommandType.StoredProcedure;
            comm.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = comm;
            da.Fill(ds);
            conn.Close();

        }
        catch (Exception ex) { }
        return ds;
    }
    public static bool SendMail(string form, string toMail, string title, string body,string SendEmailID)
    {
        bool result = false;

        try
        {
            MailMessage email = new MailMessage();
            email.From = new MailAddress(form);
            //收件人
            email.To.Add(toMail);
            //主题
            email.Subject = title;
            //内容
            email.Body = body;
            //优先级
            email.Priority = MailPriority.Normal;
            //内容类型
            email.IsBodyHtml = true;
            SmtpClient client = new SmtpClient();
            client.Send(email);
            //再把状态改一下
            string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection conn = new SqlConnection(str);
            conn.Open();
            SqlCommand comm = new SqlCommand("SendEmailDelete", conn);
            //参数SendEmailID
            comm.CommandType = CommandType.StoredProcedure;
            comm.Parameters.Add(new SqlParameter("@SendEmailID", SqlDbType.NVarChar, 50));
            comm.Parameters["@SendEmailID"].Value = SendEmailID.ToString();  

            comm.ExecuteNonQuery();

            result = true;
        }
        catch (Exception ex)
        {
            result = false;
        }
       
        return result;
    }

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luobailian/archive/2010/05/20/5611823.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值