2011-09-12 27 views
0

我在從Windows服務發送電子郵件時遇到上述錯誤。你的建議非常感謝。無法獲取IIS提取目錄(來自Windows服務)

SmtpClient smtpClient = new SmtpClient(); 
MailMessage mailMsg = this.ComposeMailMessage(); 
smtpClient.Send(mailMsg); 

配置

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]" deliveryMethod="Network"> 
      <network host="smtpsvr.mycompany.com" port="25" defaultCredentials="true" /> 
     </smtp> 
    </mailSettings> 
</system.net> 
+0

機會,運行你的網站不能訪問到存儲拾取目錄的名稱IIS元數據庫,這就是過程你錯誤的一般原因。 – bzlm

回答

0

我的或許不是你正在尋找的答案,但試試這個(避免IIS):

try 
{ 
    // To 
    MailMessage mailMsg = new MailMessage(); 
    mailMsg.To.Add(to_Address); 

    // From 
    MailAddress mailAddress = new MailAddress(from_address); 
    mailMsg.From = mailAddress; 

    // Subject and Body 
    mailMsg.Subject = subject; 
    mailMsg.Body = body; 

    // Init SmtpClient and send 
    SmtpClient smtpClient = new SmtpClient(smtp_server, port); 
    // System.Net.NetworkCredential credentials = 
    // new System.Net.NetworkCredential(smtp_user, smtp_pwd); 
    // smtpClient.Credentials = credentials; 

    smtpClient.Send(mailMsg); 
} 
catch (Exception ex) 
{ 
    Console.WriteLine(ex.Message); 
} 
+0

感謝您的回覆,但windows服務中的代碼由不同方維護,並且在其他一些環境中工作正常。 –

0

你可能需要設置SmtpClient PickupDirectory手動。

有是如何做到這一點的盧卡斯POKORNY的回答一個例子:

Cannot get IIS pickup directory

+0

事實上,我想使用「網絡」作爲deliveryMethod,因爲SMTP服務器是一個單獨的服務器。 –

0

嘗試下面的行添加到您的程序。此行需要在您的桌面上運行IIS管理和SMTP服務。

smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 

所以它會變成這個樣子

SmtpClient smtpClient = new SmtpClient(); 
MailMessage mailMsg = this.ComposeMailMessage(); 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 
smtpClient.Send(mailMsg);