powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Отправка email через gmail.com + System.Net.Mail фигня какая-то.
25 сообщений из 70, страница 2 из 3
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851197
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttArm79а ты попробуй с портом 465 :-)

в этой теме как раз таки и говорится, что с 587/25 портом все работает, но в "старом" режиме, с предварительной шифрацией канала, smtpclient не работает

А ты попробуй телнетом подключиться к гуглопочте

Код: powershell
1.
o smtp.gmail.com 465






Да вроде норм. telnet smtp.mail.com 465
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851198
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, кончайте спор. Все уже и так ясно.

System.Web.Mail +Explicit SSL как правило работает через 25/587 порт
CDO+Implicit SSL как правило работает через 25/465 порт

Arm79PS Приведи пример с mail.ru
Давай я приведу.

System.Web.Mail работает 25-й либо 587-й порт
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub ButtonSendSimpleMailRu_Click(sender As Object, e As EventArgs) Handles ButtonSendSimpleMailRu.Click
    Try
      Dim client As New SmtpClient("smtp.bk.ru", 25) '25 либо 587
      client.Credentials = New System.Net.NetworkCredential("sender", "password")
      client.EnableSsl = True

      Dim message As New MailMessage(New MailAddress("sender@bk.ru"), New MailAddress("recipient@gmail.com"))
      message.Body = "Test body"
      message.Subject = "Test subject"

      client.Send(message)

      MsgBox("OK")
    Catch
      MsgBox(Err.Description)
    End Try
  End Sub



CDO работает через 25-й либо 465-й порт
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
  Private Sub ButtonSendCDOMailRu_Click(sender As Object, e As EventArgs) Handles ButtonSendCDOMailRu.Click
    Try
      Dim o_Mess As Object = CreateObject("CDO.Message")
      Dim v_Conf As String = "http://schemas.microsoft.com/cdo/configuration/"
      With o_Mess
        '===(В-1)код необходим для добавления utf-8 в Subject(если .AddAttachment стоит до .TextBodyPart.Charset)===
        .BodyPart.Charset = "utf-8"
        '===(В-1)код необходим для добавления utf-8 в Subject(если .AddAttachment стоит до .TextBodyPart.Charset)===
        .To = "Получатель<recipient@gmail.com"
        .From = "Отправитель<sender@bk.ru>;"
        .Subject = "Тема сообщения"
        .TextBody = "Текст сообщения"
        .TextBodyPart.Charset = "utf-8"
        .AddAttachment(IO.Path.Combine(Application.StartupPath, "readme.txt")) '.Charset = "utf-8"
        With .Configuration.Fields
          .item(v_Conf & "sendusing") = 2
          .item(v_Conf & "smtpserver") = "smtp.bk.ru"
          .item(v_Conf & "smtpserverport") = 25 '25 либо 465
          .item(v_Conf & "smtpauthenticate") = 1 '1-использовать
          .item(v_Conf & "sendusername") = "sender"
          .item(v_Conf & "sendpassword") = "password"
          .item(v_Conf & "smtpusessl") = True 'использовать SSL
          .item(v_Conf & "smtpconnectiontimeout") = 60 'пока считаем что 60, потом м.б. добавим параметр
          .Update()
        End With
        .Send()
      End With
      MsgBox("Test mail was sent successfully!", vbInformation + vbOKOnly, "Email was sent")
    Catch
      MsgBox("Sending mail...Failed." & vbCrLf & "Error code: " & Err.Number & vbCrLf & Err.Description, _
       vbCritical + vbOKOnly, "Sending mail failed.")
    End Try
  End Sub



Те же самые коды работают с теми же портами для gmail.com
Для Hotmail все тоже самое, но 465-й в нижнем варианте не работает (только 25-й).

В принципе System.Web.Mail с учетом сказанного как правило всегда работает.
"Как правило" тем не менее может однажды (с каким-нибудь SMTP) не сработать, поэтому разумно имплементировать оба метода.
Использовать сторонние компоненты считаю глупо, этих двух в совокупности с головой хватит.
Напишу наверно для себя универсальную ф-цию, объединяющую эти 2 метода чтоб в дальнейшем к этому не возвращаться, будет настроение выложу.

Вот с POP3 в отличии от SMTP в плане SSL (да и вообще с POP3) задница -явная нехватка "методов" и "классов".
Пока руки не дошли и использую стороннюю cmd-утилиту (без SSL).
С Winsock когда-то пытался, но нормально не завелось.
Когда-нибудь руки дойдут, буду думать какие сторонние компоненты или Native использовать.
Ток ради бога, счас не надо никаких советов про POP3.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851199
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Вот с POP3 в отличии от SMTP в плане SSL (да и вообще с POP3) задница -явная нехватка "методов" и "классов".
c pop3 проблем не было, своего клиента накатал, свой парсер mime сделал, все нравится :-) Вернее нравилось, около года в них нужны не было.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851201
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

...вот именно, не надо РОР3, берите сразу IMAP .. :)
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851202
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

так а что нужно-то? или это просто эксперименты без какой-то конкретной цели?
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851203
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Да вроде норм. telnet smtp.mail.com 465

Подключается? фигасе
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851204
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Исходники посмотрел smtpclient, в принципе их можно выдрать, и написать свой smtpclient с блекджеком и ssl. Там в итоге все равно работа сводится с stream. Берем SslStream и пихаем в MailWriter. Конечно не все так просто, как кажется, но задача решаемая...
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851206
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttArm79Да вроде норм. telnet smtp.mail.com 465

Подключается? фигасе

да :-)

если набрать telnet + enter + open smtp.gmail.com 465, то нет. А если в командной строке сразу набрать telnet smtp.gmail.com 465, то да
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851211
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

так работает:
Код: c#
1.
2.
3.
            using (var smtpClient = new SmtpClient("smtp.mail.ru", 25))
            {
                smtpClient.EnableSsl = true;



В итоге все равно получается, что все популярные почтовики (проверял на gmail, yandex, mail) поддерживают starttls, и в поддержке implicit ssl нет особой надобности.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851214
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79В итоге все равно получается, что все популярные почтовики (проверял на gmail, yandex, mail) поддерживают starttls, и в поддержке implicit ssl нет особой надобности.

Угу, а непопулярные вообще не требуют SSL
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851215
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79если набрать telnet + enter + open smtp.gmail.com 465, то нет. А если в командной строке сразу набрать telnet smtp.gmail.com 465, то да

у меня из командной строки тож работает, но команду не могу ввести ни одну.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851216
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтак а что нужно-то? или это просто эксперименты без какой-то конкретной цели?
чтоб я чего-то делал без конкретной цели..
большая цель - я перекатываю VB6 проект на .Net
мелкая - в проге есть прикладная ф-ция отправки/приема почты (SMTP/POP3).
SMTP это в VB6 у меня CDO.Message.

>...вот именно, не надо РОР3, берите сразу IMAP .. :)
вы про стратегии, у меня POP3, с IMAP надо разбираться, цели разбираться счас не стоит

>c pop3 проблем не было, своего клиента накатал, свой парсер mime сделал, все нравится :-)
я тоже когда-то накатывал с парсерами и т.п. но 100% надежно это не работало, ты ж понимаешь что много частных случаев о которые подобные конструкции могут легко спотыкаться, что приводит в лучшем случае к невыполнению действия, в худшем - к зависанию/зацикливанию. У меня там вложения, плюс кодировки всякие и нерусские тексты. Короче промудохался лет несколько назад и принял решение пока не использовать в силу низкой отказоустойчивости.
Я счачиваю утилитой в eml-файлы, а потом делаю разбор .eml через CDO. Да и то, если имя файла-вложения не на EN и не соответствует не-Юникод языку OS, то там не без проблем.

P.S. Я ж просил тему приема почты здесь не обсуждать.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851217
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Дмитрий77,

так работает:
Код: c#
1.
2.
3.
            using (var smtpClient = new SmtpClient("smtp.mail.ru", 25))
            {
                smtpClient.EnableSsl = true;


не противоречит сказанному здесь:
17099830 .
Arm79В итоге все равно получается, что все популярные почтовики (проверял на gmail, yandex, mail) поддерживают starttls, и в поддержке implicit ssl нет особой надобности.
ДА. Но все инструкции к этим почтовикам напирают на 465-й порт без чуждых юзеру (да и мне до вчерашнего дня) слов implicit/explicit. Таким образом непонятки при настройке (глазами юзера) субъективно обеспечены.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851219
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77большая цель - я перекатываю VB6 проект на .Net
мелкая - в проге есть прикладная ф-ция отправки/приема почты (SMTP/POP3).
SMTP это в VB6 у меня CDO.Message.

Есть на примете какой-то почтовый сервак, с которым System.Net.Mail не хочет работать? Как бы со своей задачей — отправлять почту, он справляется, и настраивается как надо. Если в интерфейс юзера надо вынести настройки, то стандартных хватит вполне, порт вообще можно не спрашивать, или предложить на выбор из двух (25/587) или сделать режим «для продвинутых», позволяющий указать ещё и порт вручную. Большего-то для обычного юзера и не нужно. Это просто отправка почты, она работает.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851220
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77ДА. Но все инструкции к этим почтовикам напирают на 465-й порт без чуждых юзеру (да и мне до вчерашнего дня) слов implicit/explicit. Таким образом непонятки при настройке (глазами юзера) субъективно обеспечены.

Ниже скрин из Thunderbird, указан порт по умолчанию, его и надо рекомендовать пользователю, или вообще убрать. Настроек кот наплакал, хотя System.Net.Mail плохо подходит для реализации своего почтовика типа The Bat!, возможностей меньше, но сегодня покрывает практически все современные требования.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851221
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851222
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttУгу, а непопулярные вообще не требуют SSL
Люди часто сильно помешаны на "шифровании" всего и вся. А насколько тупа будет частная реализация SMTP/SSL сервера какой-либо случайно взятой конторы? Вы это можете предвидеть?
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851223
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Люди часто сильно помешаны на "шифровании" всего и вся. А насколько тупа будет частная реализация SMTP/SSL сервера какой-либо случайно взятой конторы? Вы это можете предвидеть?

Предвидеть нельзя, нужно столкнуться с проблемой, или хотя бы найти способ её воспроизвести. А то бороться с ветряными мельницами это как-то, не по-научному что-ли
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851224
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНиже скрин из Thunderbird, указан порт по умолчанию, его и надо рекомендовать пользователю,
Очень плохой и очень частный аргумент.
Классика - это Outlook Express, Outlook, Bat...
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851226
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Очень плохой и очень частный аргумент.
Классика - это Outlook Express, Outlook, Bat...

Настройки можно сразу затестить и предложить варианты:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
public static class SmtpHelper
{
    /// <summary>
    /// test the smtp connection by sending a HELO command
    /// </summary>
    /// <param name="config"></param>
    /// <returns></returns>
    public static bool TestConnection(Configuration config)
    {
        MailSettingsSectionGroup mailSettings = config.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;
        if (mailSettings == null)
        {
            throw new ConfigurationErrorsException("The system.net/mailSettings configuration section group could not be read.");
        }
        return TestConnection(mailSettings.Smtp.Network.Host, mailSettings.Smtp.Network.Port);
    }

    /// <summary>
    /// test the smtp connection by sending a HELO command
    /// </summary>
    /// <param name="smtpServerAddress"></param>
    /// <param name="port"></param>
    public static bool TestConnection(string smtpServerAddress, int port)
    {
        IPHostEntry hostEntry = Dns.GetHostEntry(smtpServerAddress);
        IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], port);
        using (Socket tcpSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp))
        {
            //try to connect and test the rsponse for code 220 = success
            tcpSocket.Connect(endPoint);
            if (!CheckResponse(tcpSocket, 220))
            {
                return false;
            }

            // send HELO and test the response for code 250 = proper response
            SendData(tcpSocket, string.Format("HELO {0}\r\n", Dns.GetHostName()));
            if (!CheckResponse(tcpSocket, 250))
            {
                return false;
            }

            // if we got here it's that we can connect to the smtp server
            return true;
        }
    }

    private static void SendData(Socket socket, string data)
    {
        byte[] dataArray = Encoding.ASCII.GetBytes(data);
        socket.Send(dataArray, 0, dataArray.Length, SocketFlags.None);
    }

    private static bool CheckResponse(Socket socket, int expectedCode)
    {
        while (socket.Available == 0)
        {
            System.Threading.Thread.Sleep(100);
        }
        byte[] responseArray = new byte[1024];
        socket.Receive(responseArray, 0, socket.Available, SocketFlags.None);
        string responseData = Encoding.ASCII.GetString(responseArray);
        int responseCode = Convert.ToInt32(responseData.Substring(0, 3));
        if (responseCode == expectedCode)
        {
            return true;
        }
        return false;
    }
}



Пока проблемы не вижу. И проблемного хоста.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851227
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Классика - это Outlook Express, Outlook, Bat...

Классика это веб
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851236
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПредвидеть нельзя, нужно столкнуться с проблемой, или хотя бы найти способ её воспроизвести. А то бороться с ветряными мельницами это как-то, не по-научному что-ли

Ну не такие уж ветряные. Вот нашел к примеру.

user----- Original Message -----
...
Sent: Friday, June 01, 2012 11:25 AM
Subject: Question

Hello
I’m using ... trial period, wish to buy license but…


I’ve got a question regarding Email option
In the Pop3 there is no option to set secure connection and the email server does not provide not secure connection

In SMTP there is no option to use TLS

Adresses of the servers:
Pop3: pod51015.outlook.com
Port: 995
Using: SSL

smtp: pod51015.outlook.com
Port: 587
Using: TLS

Is there any workaroud ? or maybe you can implement somthing in new version of the program ?
...
Administrator Systemow IT
Akademia Leona Kozminskiego
ul. Jagiellonska 59 | 03-301 Warszawa|
Очевидно (сейчас стало) юзер хочет SSL для входящих и Explicit SSL (то что есть в System.Web.Mail) для исходящих.
А у меня в продакшн имплементировано только Implicit SSL для исходящих через CDO.

Обратного примера правда не нашел.

>Настройки можно сразу затестить и предложить варианты
Ну вот это уже пошли издержки и излишества.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851243
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77>Настройки можно сразу затестить и предложить варианты
Ну вот это уже пошли издержки и излишества.
Не совсем так. У меня в проге есть кнопка "Тест", которая позволяет юзеру отправить "тестовый email" на любой адрес (с любой темой, текстом, вложением) с текущими smtp-настройками и поглядеть лог ошибки, ибо наугад чего-то вводить а потом запущенная система не отправляет мыло - это неправильно, здесь согласен.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851246
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не важно что за контора. Важно какой у нее почтовый сервер. Все современные поддерживают 587 порт.

Я не встречался с почтой, которая ломала мой мире. Конечно, какие то специфичные случаи не учитываются, но за 7 лет прога ни разу не упала.
...
Рейтинг: 0 / 0
Отправка email через gmail.com + System.Net.Mail фигня какая-то.
    #38851268
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Очевидно (сейчас стало) юзер хочет SSL для входящих и Explicit SSL (то что есть в System.Web.Mail) для исходящих.
А у меня в продакшн имплементировано только Implicit SSL для исходящих через CDO.

Обратного примера правда не нашел.

Я считаю, если ты не делаешь свою версию The Bat!, тебе просто надо отправлять какую-то почту, то можно просто забить на это. Стандартная реализация System.Net.Mail покрывает 99% запросов. Корпоративную почту сейчас не будут делать на доисторическом ПО, и даже с учётом доисторического ПО, которое держит обычно 25 порт, решать проблему 0.0001% пользователей с какой-то кривой почтой, это лишнее считаю.
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Отправка email через gmail.com + System.Net.Mail фигня какая-то.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]