嘿伙计们我正在使用一个基本上将所有电子邮件发送给用户的功能。但是它只通过电子邮件发送给我们服务器上的用户。使用@gmail或@hotmail的任何人似乎都没有收到我们的电子邮件。这是代码。这适用于我的服务器电子邮件,但外部电子邮件不会出去。
该网站托管在我们的服务器上。
Public Function SendMail(ByVal EmailFrom As String, ByVal EmailTo As String, ByVal EmailBcc As String, ByVal EmailSubject As String, ByVal EmailBody As String, ByVal Attachment As String) As Boolean
Dim EmailMessage As New Net.Mail.MailMessage
EmailMessage = New Net.Mail.MailMessage(EmailFrom, EmailTo, EmailSubject, EmailBody)
If EmailBcc <> "" Then
EmailMessage.Bcc.Add(EmailBcc)
End If
Dim MailClient As New Net.Mail.SmtpClient("exchange1", 25)
MailClient.UseDefaultCredentials = False
' MailClient.EnableSsl = False
EmailMessage.IsBodyHtml = True
If Attachment <> "" Then
Dim EMailAttachment As New System.Net.Mail.Attachment(Attachment)
EmailMessage.Attachments.Add(EMailAttachment)
End If
Try
MailClient.Send(EmailMessage)
Return True
Catch ex As Exception
'MsgBox("Email Error: " & ex.Message)
' Return False
End Try
End Function
编辑:任何人都可以解释为什么我部署到我的网络服务器时会发送电子邮件,但是当我在我的localhost iis时却没有?
答案 0 :(得分:2)
您的Exchange服务器很可能设置为不允许从外部发送匿名邮件。您可能需要使用有效凭据进行身份验证,并确保此帐户有权发送外部电子邮件 - 这是您的Exchange管理员可以执行的操作。
答案 1 :(得分:0)
您需要为smtp服务器使用用户名和密码(或更改smtp服务器设置以允许在未经身份验证的情况下将电子邮件发送到外部,这通常是个坏主意。)
MailClient.UseDefaultCredentials = True
MailClient.Credentials = New System.Net.NetworkCredential(username, password)