2012-08-03 93 views
0

基本上這個腳本會被告知到每10分鐘,但我只希望腳本在晚上9點的時間運行 - 凌晨4點(倫敦時間)任何人都可以在這方面幫助?C#腳本:我需要添加一個時間延遲

此外,我想限制的腳本發送不超過500封電子郵件一小時。

    /*Email Client configuration. Here you will need to specify Server, user name and password for your SMTP server, and also testing tag*/ 
      string SMTPServer = "mail.justshipit.net"; 
      int SMTPPort = 26; 
      string UserName = "no-reply+justshipit.net"; 
      string Password = "00000"; 
      string FromEmail = "[email protected]"; 
      string FromName = "Zoozio @ Amazon"; 

//email subject and email body 
      string Subject = "Please Leave feedback for your [{Source}] order from SUPER COOL STORE"; 
      string eBayEmailBody = "Hello, [{Name}].\r\n\r\nYou recently purchased:\r\n\r\n[{ItemList}]\r\n\r\nWe hope everything was satisfactory and would really appriciate it if you could go to www.amazon.co.uk/feedback and leave us some positive feedback\r\nif you had any issues please get in contact with us ASAP as we want to sort things out.\r\n\r\nCall Us:0843 289 2766\r\n\r\nMany Thanks\r\nAdam\r\nCustomer Care Manager "; 


      /*query syntax. Here we will select all orders processed 14 days ago but not older than 1 month, that don't have FEEDBACK email sent 
       and order item table. Two queries in one request 
      */ 
      string query [email protected]"SELECT pkOrderId,cEmailAddress, cFullName, [Source] 
FROM [Order] o 
LEFT OUTER JOIN Order_LifeHistory ls on ls.fkOrderId = o.pkOrderID and ls.fkOrderHistoryTypeId='EMAIL_SENT' and ls.Tag='FEEDBACK' 
WHERE 
    o.bProcessed = 1 AND o.HoldOrCancel=0 AND o.dProcessedOn > DATEADD(D,-10,GETDATE()) AND ls.sid_history is null 
    AND o.Source IN ('AMAZON'); 
    SELECT pkOrderId,ItemNumber = oi.ItemNumber,ItemTitle = sis.cItemName 
    FROM [Order] o 
    INNER JOIN [OrderItem] oi on oi.fkOrderID = o.pkOrderID 
    INNER JOIN [StockItems] sis on sis.pkStockID = oi.fkStockID 
    LEFT OUTER JOIN Order_LifeHistory ls on ls.fkOrderId = o.pkOrderID and  ls.fkOrderHistoryTypeId='EMAIL_SENT' and ls.Tag='FEEDBACK' 
WHERE 
    o.bProcessed = 1 AND o.HoldOrCancel=0 AND o.dProcessedOn > DATEADD(D,-10,GETDATE()) AND ls.sid_history is null 
    AND o.Source IN ('AMAZON');"; 
//SELECT pkOrderId,ItemNumber = oi.ItemNumber,ItemTitle = sis.cItemName 
//FROM [Order] o 
//INNER JOIN [OrderItem] oi on oi.fkOrderID = o.pkOrderID 
//INNER JOIN [StockItems] sis on sis.pkStockID = oi.fkStockID 
//LEFT OUTER JOIN Order_LifeHistory ls on ls.fkOrderId = o.pkOrderID and  //ls.fkOrderHistoryTypeId='EMAIL_SENT' and ls.Tag='FEEDBACK' 
//WHERE 
//o.bProcessed = 1 AND o.HoldOrCancel=0 AND o.dProcessedOn > DATEADD(D,-10,GETDATE())  //AND ls.sid_history is null 
//AND o.Source IN ('AMAZON');"; 
+1

使用內置的[Windows任務調度程序(http://en.wikipedia.org/wiki/Windows_Task_Scheduler)這一點。不需要構建定製應用程序來安排腳本的運行。 – Oded 2012-08-03 14:22:16

+2

我在未來的建議,當你發佈你考慮發佈代碼的問題不暴露你的業務/客戶的內部架構,基礎設施和身份:) – 2012-08-03 14:23:04

回答

0

我會建議一個調度框架。 Quartz.net是一個好這一點,而且非常容易學習/實現

0

您可以隨時使用計劃任務/ cron作業來實現你的計時器。