如何自动发送电子邮件

时间:2014-11-14 05:18:26

标签: c# email webforms

我正在尝试使用计时器自动发送电子邮件。下面给出的代码是我用来发送电子邮件。但它没有回应。在按钮点击事件下使用相同的代码,它的工作完美。帮我找一个合适的解决方案。谢谢。

代码:

namespace AlertMail
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            MailMessage loginInfo = new MailMessage();
            string em = "toAddress@gmail.com";
            loginInfo.To.Add(em.ToString());
            loginInfo.From = new MailAddress("fromAddress@gmail.com");
            loginInfo.Subject = "Alert Information";

            loginInfo.Body = "Hai";
            loginInfo.IsBodyHtml = true;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;
            smtp.EnableSsl = true;
            smtp.Credentials = new System.Net.NetworkCredential("fromAddress@gmail.com", "Password");
            smtp.Send(loginInfo);
            label6.Text = "Alert is send to your email..!!";
        }
   }
}

2 个答案:

答案 0 :(得分:2)

在许多网络应用程序中,我们需要发送计划(自动)电子邮件,我们会安排它们。  像:

  1. 定期发送电子邮件
  2. 每天,每周,每月或每年发送一次消息。
  3. 为此,我们通常使用Windows服务或Windows应用程序。

    正如我们所知,Web服务器IIS一直在运行,我们可以在应用程序中添加一个计时器,计时器可以管理所有这些活动

    //Inside Global.ascx 
          void Application_Start(object sender, EventArgs e) 
        {
          // Code that runs on application startup
         System.Timers.Timer myTimer = new System.Timers.Timer();
          // Set the Interval to 5 seconds (5000 milliseconds).
         myTimer.Interval = 5000;
         myTimer.AutoReset = true;
         myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
         myTimer.Enabled = true; 
         } 
    
     public void myTimer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
    {
         // use your mailer code 
        clsScheduleMail objScheduleMail = new clsScheduleMail();
        objScheduleMail.SendScheduleMail();   
    }
    
    // inside your class
    public void SendScheduleMail()
    { 
      // Write your send mail code here.
    } 
    

答案 1 :(得分:0)

通常当我需要在Windows服务器上按计划运行时,我使用计划任务。您可以将您的电子邮件编写为控制台应用程序,将其保存到服务器上的某个位置,然后让计划任务在给定的时间间隔内运行应用程序。我不确定您运行的是哪个版本的Windows,但这些说明适用于Windows 2008,Windows 8和Windows 2012:

http://technet.microsoft.com/en-us/library/cc725745.aspx