我正在尝试使用计时器自动发送电子邮件。下面给出的代码是我用来发送电子邮件。但它没有回应。在按钮点击事件下使用相同的代码,它的工作完美。帮我找一个合适的解决方案。谢谢。
代码:
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..!!";
}
}
}
答案 0 :(得分:2)
在许多网络应用程序中,我们需要发送计划(自动)电子邮件,我们会安排它们。 像:
为此,我们通常使用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: