2009-12-31 146 views

回答

8

使用System.Net.Mail namespace中的類從您的應用發送電子郵件。具體而言,MailMessage class用於此目的。

要定期發送電子郵件,您可以使用計時器(例如,使用System.Timers.Timer),或者您可以使用內置的Windows任務計劃程序,該計劃程序具有豐富的功能並作爲服務運行,因此您不需要保持交互式會話在您的機器上打開。如果您提供有關您正在開發的應用類型的更多詳細信息,我可以給您更詳細的答案。

+0

我該如何設置一個計時器,使其每週都能做到。 – 2009-12-31 15:57:43

+1

正如我所說的,您可以使用內置的Windows調度程序或自己編寫功能。每種方法都有其優點和缺點。使用Windows任務計劃程序可以爲您節省大量工作:您只需提供一個可執行文件即可啓動(將發送電子郵件)並將計劃程序編程爲每週運行一次。在我的Windows Vista上,任務計劃程序位於「控制面板」,「管理工具」,「任務計劃程序」下;這可能會有所不同,具體取決於您使用的Windows版本。 自己編寫功能可能會給你更多的靈活性,但它更多的工作。 – CesarGon 2009-12-31 17:28:34

+0

你可能想看看Quartz.NET。這是一個調度框架/應用程序。 http://quartznet.sourceforge.net/ – Walter 2009-12-31 17:45:37

0

我還沒有直接創建任何類似於此的東西,但我已經看到在服務器上使用Scheduled Task的解決方案,它們設置爲在特定日期/時間運行一個執行所需內容的小腳本。這假定你有你自己的服務器,雖然...

0

我使用這種方法來使用Gmail,它適用於我。

var fromAddress = new MailAddress("From"); 
       var toAddress = new MailAddress("To"); 
       string fromPassword = textBox4.Text; 
       const string subject = "Test"; 
       const string body = "Test Finished"; 

       var smtp = new SmtpClient 
       { 
        Host = "smtp.gmail.com", 
        Port = 587, 
        EnableSsl = true, 
        DeliveryMethod = SmtpDeliveryMethod.Network, 
        UseDefaultCredentials = false, 
        Credentials = new System.Net.NetworkCredential(fromAddress.Address, fromPassword) 
       }; 
       using (var message = new MailMessage(fromAddress, toAddress) 
       { 
        Subject = subject, 
        Body = body 
       }) 
       { 
        Attachment attachf = new Attachment("C:\\file.txt"); 
        message.Attachments.Add(attachf); 
        smtp.Send(message); 
       } 
      } 
相關問題