System.Net.Mail.SmtpClient - 客户端无权作为此发件人发送

时间:2017-01-06 17:48:43

标签: asp.net vb.net email windows-authentication smtpclient

我需要通过网络应用程序发送电子邮件,但电子邮件所在的地址需要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下的SMTP服务器名称(mailsettings-&gt; smtp)

如何让应用程序使用用户凭据?

1 个答案:

答案 0 :(得分:1)

您是否在Web.config中指定了smtpClient.Credentials = new NetworkCredential("fake@false.nl", "abcd1234"); ?如果不是,你必须这样做才能使用它们。这将允许当前登录的用户通过指定的SMTP服务器发送电子邮件。请注意,网站通常在单独的用户凭据下运行,而不是在计算机上当前登录的用户。

book

或在代码中指定凭据。

you are attempting to change relation :people of MyDb.Book, but there is missing data.

如果两者都不起作用,则您无权在该服务器上发送邮件。

查看更多信息

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