Net.Mail.SmtpClient不发送到外部电子邮件

时间:2013-09-23 18:57:54

标签: asp.net vb.net email

嘿伙计们我正在使用一个基本上将所有电子邮件发送给用户的功能。但是它只通过电子邮件发送给我们服务器上的用户。使用@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时却没有?

2 个答案:

答案 0 :(得分:2)

您的Exchange服务器很可能设置为不允许从外部发送匿名邮件。您可能需要使用有效凭据进行身份验证,并确保此帐户有权发送外部电子邮件 - 这是您的Exchange管理员可以执行的操作。

答案 1 :(得分:0)

您需要为smtp服务器使用用户名和密码(或更改smtp服务器设置以允许在未经身份验证的情况下将电子邮件发送到外部,这通常是个坏主意。)

MailClient.UseDefaultCredentials = True
MailClient.Credentials = New System.Net.NetworkCredential(username, password)