2009-10-02 71 views
1

通常我的應用程序發送一個通用系統地址的電子郵件。但在某些情況下,我想以登錄用戶身份發送。.NET爲什麼我無法重寫我的web.config mailSettings?

的web.config:

<?xml version="1.0"?> 
<configuration> 
    ... 
    <appSettings> 
     ... 
     <add key="DefaultEmailAddress" 
      value="[email protected]" /> 
    </appSettings> 
    <system.net> 
     <mailSettings> 
      <smtp> 
       <network host="servername" 
         port="25" 
         userName="noreply" 
         password="apple" /> 
      </smtp> 
     </mailSettings> 
    </system.net> 
    ... 
</configuration> 

此代碼無法從web.config中重寫默認的發件人:

Dim from As String = ConfigurationManager.AppSettings("DefaultEmailAddress") 
Dim to As String = "[email protected]" 
Dim m As New Mail.MailMessage(from, to) 
m.IsBodyHtml = True 
m.Subject = "Test" 
m.Body = "<p>This is a test.</p>" 

Dim c As New System.Net.Mail.SmtpClient 

If CurrentUser.HasExchangeCredentials Then 
    Dim userName As String = CurrentUser.ExchangeUserName 
    Dim password As String = CurrentUser.ExchangePassword 
    Dim address As String = CurrentUser.EmailAddress 
    c.UseDefaultCredentials = False 
    c.Credentials = New System.Net.NetworkCredential(userName, password) 
    m.Sender = New Mail.MailAddress(address) 
End If 

c.Send(m) 

我的郵件出去,但noreply發送爲@例子。 com並且也不會顯示在我的Outlook已發送文件夾中。我不想UseDefaultCredentials。我想使用一個新的,不同的NetworkCredential

我正在使用Microsoft Exchange。

回答

2

我覺得這回答了你的問題:

http://www.vbdotnetforums.com/vb-net-general-discussion/14895-system-net-mail-mailmessage-sender-vs-system-net-mail-mailmessage.html

發件人和從是分開的。更改發件人不會更改發件人地址。

在您的代碼中,將From屬性設置爲您的地址變量。

+0

謝謝!我設置了m.From。它現在似乎來自用戶。但它仍然不會顯示在Outlook的用戶的已發送文件夾中。爲什麼? – 2009-10-02 11:55:30

+0

我不完全確定,但我認爲發送的項目是Outlook客戶端本身和/或MAPI配置文件的操作,也許....我不認爲.net中的郵件會將任何內容放入發送的項目中。以下是此鏈接:http://bytes.com/topic/asp-net/answers/506310-system-net-mail-outlook – klabranche 2009-10-04 14:18:26

1

在上面的代碼中,我沒有看到重寫默認發件人的位置。您正在設置「從」價值[email protected]

Dim from As String = ConfigurationManager.AppSettings("DefaultEmailAddress") 

你應該嘗試像:

Dim from As String = CurrentUser.ExchangeUserName 

這將使用該用戶的電子郵件地址,而不是位於你的網絡的價值.config文件。

+1

@Ricardo - from是設置在他樣本的第三行。 Dim m As New Mail.MailMessage(from,to) – klabranche 2009-10-02 02:17:14

+1

確切地說,它被設置爲具有web.config文件([email protected])中值的變量「from」。 「from」的值需要根據需要設置爲當前用戶的電子郵件地址。 – 2009-10-02 02:39:20

+1

@Ricardo - 將from設置爲CurrentUser.Anything本身並不重要,因爲對象m(MailMessage)已經在第3行的構造函數中設置爲from。要在事實之後更改它,您將不得不修改Zach試圖在m.Sender = New Mail.MailAddress(地址)中執行的對象的屬性。 AKA-Zach在地址變量中已經有了一個新的電子郵件地址,並且他試圖將其設置爲m.Sender並且它似乎沒有采取......變量地址本質上是他的「重寫」/新電子郵件地址值。 :) – klabranche 2009-10-02 02:56:53

相關問題