system.net.mail не отправляет почту - PullRequest
0 голосов
/ 13 марта 2011

Я занимаюсь разработкой с vb2005, используя system.net.mail для отправки почты с использованием конфигурации Google. полный образец моего кода был размещен здесь ранее

        With smtp
            .Host = "smtp.google.com"
            .Port = 465
            .UseDefaultCredentials = False
            .Credentials = New System.Net.NetworkCredential(mygoogleemail, mypass)
            .EnableSsl = true
            .Timeout = 60000
        End With

Я понял, что операция истекла. если я изменяю порт на 587, он говорит, что the server does not support secure connection

[EDIT] может ли брандмауэр блокировать его?

в любом случае можно указать имя отправляющего приложения?

Ответы [ 5 ]

2 голосов
/ 13 марта 2011

Попробуйте

Dim myLogin As New NetworkCredential("username@gmail.com", "password")
Dim msg As New MailMessage("username@gmail.com", "to@somedomain.com", "subjectLine", "emailBodyText")

msg.IsBodyHtml = True

Try
    Dim client As New SmtpClient("smtp.gmail.com", 587)
    client.EnableSsl = True
    client.UseDefaultCredentials = false
    client.Credentials = myLogin
    client.Send(msg)
Catch ex As SmtpException
    msgbox(ex.Message)
End Try

Если вы получили тайм-аут, устраните неполадки

  1. Перейдите на gmail.com и убедитесь, что вы можете войти с этими учетными данными.
  2. Войдите в учетную запись gmail, перейдите в настройки и убедитесь, что POP / IMAP настроен. Я не думаю, что они позволяют вам отправлять почту через ваш аккаунт, если это не включено.
  3. Попробуйте изменить порт на 25 с помощью SSL.
  4. Попробуйте TELNET на почтовый сервер, чтобы узнать, можете ли вы отправлять ретранслируемые письма через вашего провайдера

    Откройте командную строку и введите (без кавычек) telnet smtp.gmail.com 25

Если вы получили тайм-аут, то проблема в том, что ваша локальная локальная сеть блокирует почту или ваш провайдер.

2 голосов
/ 13 марта 2011

Вы пробовали ответить по адресу: Отправка электронной почты через SMTP-сервер Gmail с C #

Просто чтобы посмотреть, работает ли это.

Обратите внимание, что в ответе на свое решение он упоминает, что web.config ниже в сообщении не принимается в качестве ответа

<system.net>
  <mailSettings>
    <smtp from="myusername@gmail.com" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="myusername@gmail.com"/>
    </smtp>
  </mailSettings>  
</system.net>
1 голос
/ 13 марта 2011

Порт был правильным в OP, но хост был неправильным

    With smtp
        .Port = 465 '465 for ssl
        .EnableSsl = True
        .UseDefaultCredentials = False
        .Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "yourpassword")
        .Host = "smtp.gmail.com"
    End With

И просто для проверки, вы включили pop в gmail, правильно?

0 голосов
/ 22 ноября 2013

Если вы используете ДВА ШАГОВОЙ ПРОВЕРКИ для gmail, сначала отключите его, а затем повторите попытку с этим кодом

Dim myLogin As New NetworkCredential("username@gmail.com", "password")
Dim msg As New MailMessage("username@gmail.com", "to@somedomain.com", "subjectLine", "emailBodyText")

msg.IsBodyHtml = True

Try
    Dim client As New SmtpClient("smtp.gmail.com", 587)
    client.EnableSsl = True
    client.UseDefaultCredentials = false
    client.Credentials = myLogin
    client.Send(msg)
Catch ex As SmtpException
    msgbox(ex.Message)
End Try
0 голосов
/ 13 марта 2011

Номер порта - 587.

А также, попробуйте этот порядок согласно этому решению

    With smtp
        .UseDefaultCredentials = False
        .Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "mypwd")
        .Host = "smtp.gmail.com"
        .Port = 587
        .EnableSsl = true
    End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...