【发布时间】:2017-01-06 17:48:42
【问题描述】:
我需要通过 Web 应用程序发送电子邮件,但电子邮件发送到的地址需要 SMTP 身份验证。该代码适用于不需要需要身份验证的邮箱。
我想传递 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 (mailsettings->smtp) 下的 SMTP 服务器名称
如何让应用程序使用用户的凭据?
【问题讨论】:
-
WinForms? WPF? ASP.NET?
-
对不起,它的asp.net!
-
我对 ASP.NET 不太了解,但可能是因为后端代码运行在服务器端,因此使用了服务器的帐户凭据?还是应该是这样的?
-
我认为您需要将凭据设置为CredentialCache.DefaultNetworkCredentials。
-
感谢 Andrew,看来这可能是正确的方法。我会在星期一试一试。
标签: asp.net vb.net email windows-authentication smtpclient