2013-09-23 4 views
0

Привет, ребята, я использую функцию, которая по сути посылает все электронные письма пользователям. Однако это только электронные письма пользователям, которые находятся на наших серверах. Любой, кто использует @gmail или @hotmail, похоже, не получает наши письма вообще. Вот код. Опять же, это работает для моих почтовых серверов, но внешние письма не выходят.Net.Mail.SmtpClient Не отправлять внешние сообщения

Сайт размещен на наших серверах.

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 

EDIT: Может кто-нибудь объяснить, почему электронные письма отправляются, когда я развернуть на моем веб-сервер, но не тогда, когда им в моем LOCALHOST IIS?

+0

Это очень вероятно, что это не имеет никакого отношения к коду и всему, что связано с SMTP-сервером. Вы должны проверить журналы своего сервера и посмотреть, что он делает с этими сообщениями. – David

+0

Попробуйте использовать порт 587. –

ответ

2

Скорее всего, ваш сервер Exchange настроен так, чтобы анонимные сообщения не отправлялись извне. Вероятно, вам придется пройти аутентификацию с действительными учетными данными и убедиться, что у этой учетной записи есть доступ к отправке внешних писем - что может сделать ваш администратор Exchange.

+1

Вам нужно, чтобы ваш администратор создал контакт для внешнего сообщения. После этого вы можете добавить контакт в группу рассылки, чтобы упростить кодирование. – jcwrequests

+0

Может ли кто-нибудь объяснить, почему электронные письма отправляются при развертывании на моем веб-сервере, но не когда я в моем localhost iis? – Byrd

0

Вам необходимо использовать имя пользователя и пароль для сервера smtp (или изменить параметры сервера smtp, чтобы разрешить отправку электронной почты за пределами без проверки подлинности, что обычно является плохой идеей).

MailClient.UseDefaultCredentials = True 
MailClient.Credentials = New System.Net.NetworkCredential(username, password) 
Смежные вопросы