0

こんにちは、基本的にすべてのメールをユーザーに送信する関数を使用しています。ただし、サーバー上にいるユーザーにのみメールを送信します。@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にいるときは送信されませんか?

4

2 に答える 2

2

おそらく、Exchange サーバーは、匿名メッセージを外部に送信することを許可しないように設定されています。おそらく、有効な資格情報で認証し、このアカウントが外部メールを送信するためのアクセス権を持っていることを確認する必要があります。これは、Exchange 管理者が実行できることです。

于 2013-09-23T19:00:09.080 に答える
0

smtp サーバーのユーザー名とパスワードを使用する必要があります (または、smtp サーバーの設定を変更して、認証なしで外部に電子メールを送信できるようにする必要がありますが、これは一般的に悪い考えです)。

MailClient.UseDefaultCredentials = True
MailClient.Credentials = New System.Net.NetworkCredential(username, password) 
于 2013-09-24T00:46:15.250 に答える