2017-01-06 6 views
0

웹 응용 프로그램을 통해 전자 메일을 보내야하지만 전자 메일 주소로 이동하려면 SMTP 인증이 필요합니다. 이 코드는 이 아닌에 인증이 필요한 사서함에서 작동합니다.System.Net.Mail.SmtpClient - 클라이언트가이 보낸 사람으로 보낼 수있는 권한이 없습니다.

Windows 사용자 자격 증명 (사이트에서 Windows 인증 사용)을 전달하고 싶습니다. 내 코드를 사용하여이를 수행 할 수 있다고 생각했지만 불행히도 보낼 권한이없는 클라이언트에 대해서는 오류가 발생합니다. 로그인 한 사용자가 아닌 응용 프로그램 풀 사용자의 자격 증명을 사용하고 있다고 가정합니다.

Dim mailMessage As System.Net.Mail.MailMessage = New System.Net.Mail.MailMessage() 
mailMessage.IsBodyHtml = True 
Dim strBody As String = "<font size='2' font face='Tahoma'>" & _ 
"<br><br><b>Date: </b>" & Me.txtDate.Text 
mailMessage.From = New System.Net.Mail.MailAddress(fromAddress) 'Logged in user's email address 
' More code here to build the email body etc... 
' Then attempt to send it: 
Dim smtpClient As System.Net.Mail.SmtpClient = New System.Net.Mail.SmtpClient 
smtpClient.UseDefaultCredentials = True 
smtpClient.Send(mailMessage) 

의 Web.config은 system.net 아래에만 SMTP 서버 이름 (mailsettings-> SMTP)

가 어떻게 사용자의 자격 증명을 사용하는 응용 프로그램을합니까를 포함?

+0

윈폼를 참조하십시오? WPF? ASP.NET? –

+0

죄송합니다, 해당 asp.net! –

+0

ASP.NET에 대해 많이 알지는 못하지만 백엔드 코드가 서버 측에서 실행되므로 서버의 계정 자격 증명이 사용되기 때문에 문제가 발생할 수 있습니까? 아니면 이렇게 될 예정입니까? –

답변

1

Web.config에서 UseDefaultCredentials을 지정 했습니까? 그렇지 않다면 사용하기 위해 그렇게해야합니다. 이렇게하면 현재 로그인 한 사용자가 지정된 SMTP 서버를 통해 전자 메일을 보낼 수 있습니다. 웹 사이트는 대개 컴퓨터에 현재 로그인 한 사용자가 아닌 별도의 사용자 자격 증명으로 실행됩니다.

<system.net> 
    <mailSettings> 
    <smtp deliveryMethod="network"> 
     <network host="localhost" port="25" defaultCredentials="true" /> 
    </smtp> 
    </mailSettings> 
</system.net> 

코드에 자격 증명을 지정하십시오.

smtpClient.Credentials = new NetworkCredential("[email protected]", "abcd1234"); 

둘 다 작동하지 않으면 단순히 해당 서버에서 메일을 보낼 권한이 없습니다.

더 많은 정보를 원하시면

https://msdn.microsoft.com/nl-nl/library/system.net.mail.smtpclient.usedefaultcredentials(v=vs.110).aspx

https://msdn.microsoft.com/nl-nl/library/w355a94k(v=vs.110).aspx

+0

아니요, web.config에 넣지 않았습니다. 나는 월요일에 그것을 시도 할 것이다. ''태그에 들어 있습니까? 응용 프로그램 풀 사용자 대신 로그인 한 사용자로 보내야합니다. 우리는 최근 그룹 주소로 전자 메일을 보낼 때 인증을 요구하도록 Exchange 서버를 변경했습니다. Outlook을 통해 이메일을 보내고 있지만 내 응용 프로그램에서 작동하지 않는 사용자의 경우 모두 정상적으로 작동합니다. –

+0

현재 사용자 인 경우 Exchange 서버에서 허용하는 경우 작동합니다. – VDWWD

+0

이 기능을 사용할 수 없습니다. 사용자의 암호를 알지 못해서'NetworkCredential'의 새로운 인스턴스를 만듭니다. 수동으로 지정하는 대신 Windows 인증에서 전달하는 방법이 있습니까? –