2009-10-02 2 views
1

일반적으로 내 응용 프로그램은 일반 시스템 주소로 전자 메일을 보냅니다. 하지만 어떤 경우에는 로그인 한 사용자로 대신 보내고 싶습니다..NET web.config mailSettings를 재정의 할 수없는 이유는 무엇입니까?

의 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 로 전송됩니다

<?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의에서 그 기본 보낸 사람을 무시하지 못합니다. com 그리고 내 Outlook Sent 폴더에도 표시되지 않습니다.

내가 원하지 않는 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

고마워요! 내가 설정 했어. 이제 사용자가 보낸 것으로 보입니다. 그러나 여전히 Outlook의 사용자의 보낸 편지함 폴더에는 나타나지 않습니다. 왜? –

+0

전적으로 확신 할 수는 없지만 보낸 항목은 Outlook 클라이언트 자체 및/또는 MAPI 프로필의 작업 일 것입니다.나는 닷넷에있는 메일이 보내진 항목에 무엇이든 넣을 것이라고 생각하지 않는다. 여기에 대한 링크가 있습니다 : http://bytes.com/topic/asp-net/answers/506310-system-net-mail-outlook – klabranche

1

위의 코드에서 기본 보낸 사람을 무시하는 위치가 표시되지 않습니다. 당신은 값 "에서"[email protected]로 설정됩니다

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

당신은 시도해야 뭔가처럼 :

Dim from As String = CurrentUser.ExchangeUserName 

이 웹에있는 값 대신 사용자의 이메일 주소를 사용합니다 .config 파일.

+1

@Ricardo - 출처는 그의 샘플의 세 번째 줄에 있습니다. Dim m As New Mail.MailMessage (from, from) – klabranche

+1

정확히, web.config 파일 ([email protected])의 값을 가진 "from"변수로 설정됩니다. "from"의 값은 현재 사용자의 이메일 주소로 설정되어야합니다. –

+1

@Ricardo - From 개체를 CurrentUser로 설정하는 것은 문제가되지 않습니다. 개체 m (MailMessage)이 이미 3 행의 생성자에서 from으로 설정 되었기 때문에 문제가되지 않습니다. 사실을 변경 한 후에는이를 변경해야합니다. Zach가 m.Sender = New Mail.MailAddress (주소)에서 수행하려고 시도 할 때 개체의 속성. 일명 --Zach는 이미 주소 변수에 새 이메일 주소를 가지고 있으며 m.Sender로 설정하려고 시도하고 있으며 취하지 않은 것 같습니다. 변수 주소는 본질적으로 "무시 된"/ 새 이메일 주소입니다 값. :) – klabranche

관련 문제