System.Net.Mail.SmtpClient - 客户端无权作为此发件人发送
System.Net.Mail.SmtpClient - Client does not have permission to send as this sender
我需要通过 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
下的 SMTP 服务器名称 (mailsettings->smtp)
如何让应用程序使用用户的凭据?
您是否在 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("fake@false.nl", "abcd1234");
如果两者都不起作用,则您无权在该服务器上发送邮件。
查看更多信息
https://msdn.microsoft.com/nl-nl/library/w355a94k(v=vs.110).aspx
我需要通过 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
下的 SMTP 服务器名称 (mailsettings->smtp)
如何让应用程序使用用户的凭据?
您是否在 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("fake@false.nl", "abcd1234");
如果两者都不起作用,则您无权在该服务器上发送邮件。
查看更多信息
https://msdn.microsoft.com/nl-nl/library/w355a94k(v=vs.110).aspx