我是asp.net的新手,正在尝试通过这个简短的代码发送电子邮件。
Public Class sMail
Public emailBody As String
Public emailSubject As String
'Public sendTo As String
Public Function sendMail() As Boolean
Dim eMail As New System.Net.Mail.MailMessage
Dim smtpClient As New System.Net.Mail.SmtpClient("mydomain", 25)
Dim credentials As New System.Net.NetworkCredential("info@mydomain.com", "password")
smtpClient.Credentials = credentials
smtpClient.UseDefaultCredentials = True
smtpClient.DeliveryMethod = Net.Mail.SmtpDeliveryMethod.Network
eMail.From = New System.Net.Mail.MailAddress("info@mydomain.com", "Info")
eMail.To.Add(New Net.Mail.MailAddress("example@outsidedomain.com"))
eMail.Subject = emailSubject
eMail.Body = emailBody
eMail.BodyEncoding = System.Text.Encoding.UTF8
eMail.IsBodyHtml = False
Try
smtpClient.Send(eMail)
Return True
Catch ex As Exception
Return False
End Try
End Function
End Class
在我的域外发送邮件 (gMail,Hotmail等),我得到: 邮箱不可用。服务器响应是:中继需要验证
但是我在我自己的域名上发送电子邮件没有任何问题。
我尝试了几次更改,但错误相同。以下不起作用
但是当我在Outlook中使用相同的SMTP设置时,我遇到了相同的错误服务器错误:' 550中继需要验证在我自己的域外发送邮件时。比如在hotmail,gmail上。
但是,当我更改Outlook中的帐户设置并勾选时:我的外发(SMTP)服务器需要身份验证 - >使用与接收邮件服务器相同的设置,我能够向任何域发送电子邮件。
我无法弄清楚这一点,任何人都可以指导我吗?
答案 0 :(得分:1)
确保web.config中网络元素的defaultCredentials属性未设置为" true"。有关如何配置与System.Net.Mail
一起使用的邮件设置的详细信息,请See here。
答案 1 :(得分:0)
我想出了某种方式,但仍然无法解释为什么这是
我没有在代码隐藏中声明凭据,而是在webconfig中声明 mailsettings
<system.net>
<mailSettings>
<smtp from="info@mydomain.com">
<network host="info@mydomain.com" port="25" userName="info@mydomain.com" password="secret" defaultCredentials="false" enableSsl="false" clientDomain="mydomain.com"/>
</smtp>
</mailSettings>
</system.net>
然后在后面的代码中使用了smtp客户端而没有设置凭据:
Public Class sMail
Public emailBody As String
Public emailSubject As String
Public sendTo As String
Public Function sendMail() As Boolean
Dim eMail As New System.Net.Mail.MailMessage
eMail.Sender = New System.Net.Mail.MailAddress("info@mydomain.com")
eMail.Priority = Net.Mail.MailPriority.High
eMail.From = New System.Net.Mail.MailAddress("info@mydomain.com")
eMail.To.Add(sendTo)
eMail.Subject = emailSubject
eMail.Body = emailBody
eMail.IsBodyHtml = True
eMail.BodyEncoding = Encoding.Default
Dim smtpClient As New System.Net.Mail.SmtpClient()
Try
smtpClient.Send(eMail)
Return True
Catch ex As Exception
Return False
End Try
End Function
End Class
这个方法对我有用,它也应该使用在代码后面而不是在web.config中声明的凭据我想,我不确定,但是没有为我工作