Отправка электронной почты через прокси с помощью Gmail SMTP - PullRequest
3 голосов
/ 15 апреля 2010

Попытка отправить электронное письмо в моем приложении C #. Я за прокси - что не вызывает сомнений, почему код не работает. Это то, что я до сих пор:

App.Config

<system.net>
    <defaultProxy enabled="false">
      <proxy proxyaddress="xxx.xxx.xxx.xxx"/>
    </defaultProxy>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network host="smtp.gmail.com" port="587"/>
      </smtp>
    </mailSettings>
  </system.net>

Код

        var username = "...";
        var password = "...";

        var fromEmail = "...";
        var toEmail = "...";
        var body = "Test email body";
        var subject = "Test Subject Email";

        var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential(username, password),
            EnableSsl = true
        };

        try
        {
            client.Send(fromEmail, toEmail, subject, body);
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }  

Каждый раз при получении System.Net.WebException: удаленное имя не может быть разрешено: 'smtp.gmail.com'

Где / как начать отладку?

Ответы [ 2 ]

8 голосов
/ 15 апреля 2010

Для отладки всего, что связано с клиентским сервером, telnet - ваш друг.

Попробуйте зайти в DOS и набрать:

  telnet smtp.gmail.com 587

Вы должны увидеть:

  220 mx.google.com ESMTP 20sm950596pzk.3

Если вы этого не сделаете (вы получаете «не удается подключиться» или что-то подобное), вы определенно заблокированы.

Вы можете установить telnet из ваших программ добавления / удаления в «компонентах Windows», если у вас его не установлено.

3 голосов
/ 15 апреля 2010

Вы правы, что использование прокси-сервера препятствует работе вашего кода. Решение не так просто. Я не знаю стандартного «SMTP-прокси» (как и HTTP-прокси). Вам нужно будет использовать прокси-сервер SOCKS и найти для него какой-нибудь клиент .NET - в фреймворке .NET его нет, но если вы воспользуетесь «.NET SOCKS proxy», вы сможете найти его.

Маловероятно, что в вашей сети работает прокси-сервер SOCKS, поэтому вам, возможно, придется отказаться от этого и просто использовать локальный SMTP-сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...