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



嘿伙计们,我正在使用一个基本上将所有电子邮件发送给用户的函数。但是,它只向我们服务器上的用户发送电子邮件。任何使用@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

编辑:谁能解释为什么当我部署到我的网络服务器时发送电子邮件,而不是在我的本地主机 IIS 中时?

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

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

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

相关内容

最新更新