2014-11-14 4 views
1

타이머를 사용하여 자동으로 이메일을 보내려고합니다. 아래 주어진 코드는 이메일 보내기에 사용했습니다. 그러나 응답하지 않습니다. 버튼 클릭 이벤트에서 동일한 코드를 사용하는 동안 완벽하게 작동합니다. 적절한 해결책을 찾도록 도와주세요. 고맙습니다.자동으로 이메일을 보내는 방법

코드 :

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

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      MailMessage loginInfo = new MailMessage(); 
      string em = "[email protected]"; 
      loginInfo.To.Add(em.ToString()); 
      loginInfo.From = new MailAddress("[email protected]"); 
      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("[email protected]", "Password"); 
      smtp.Send(loginInfo); 
      label6.Text = "Alert is send to your email..!!"; 
     } 
    } 
} 
+2

잘 경우, 아마도 타이머를 사용할 수 없습니다 ? 이벤트에 중단 점을 설정하고 실행 중인지 확인 했습니까? 또한 문자열에서'.ToString()'을 호출 할 필요가 없습니다 ('em'에서 이것을 수행합니다). –

+0

@RufusL : 감사합니다. 작동하지 않음, 실제로 타이머가 작동하지 않습니다. – Vipin

답변

2

많은 웹 응용 프로그램에서 우리는 일정 (자동) 이메일을 보낼 필요하고 우리는 그들을 예약합니다. 처럼 :

  1. 일일, 주간, 월간 또는 연간 간격으로 메시지를 보냅니다 정기적으로
  2. 에 이메일을 보냅니다.

이 경우 일반적으로 Windows 서비스 또는 Windows 응용 프로그램을 사용합니다. 우리는 웹 서버 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. 
} 
0

일반적으로 이러한 모든 활동을 관리 할 수 ​​있습니다 Windows 서버, 나는 예약 된 작업을 사용합니다. 전자 메일을 콘솔 응용 프로그램으로 작성하여 서버의 한 위치에 저장 한 다음 예정된 작업으로 주어진 시간 간격으로 응용 프로그램을 실행할 수 있습니다. 나는 당신이 실행중인 Windows 버전을 잘 모르겠지만,이 지침은 윈도우 2008, 윈도우 8 및 Windows 2012에 적용 코드가 잘 작동

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

관련 문제