locked
UWP + SMTP RRS feed

  • Вопрос

  • Для WPF есть "using System.Net.Mail;".

    А для UWP аналогичная библиотека есть для работы с SMTP?

    1 марта 2017 г. 16:54

Ответы

  • Стандартной - нету. Есть https://github.com/LightBuzz/SMTP-WinRT.

    Но, если честно, я бы не рекомендовал ничего с клиентской части (любой тип приложения) слать напрямую в SMTP. Данный подход предполагает, что в коде программы должны быть зашиты логин и пароль от SMTP-сервера, так что злонамеренный пользователь с помощью отладчика может узнать их. Слать что-то нужно исключительно из серверной части.

    • Помечено в качестве ответа Liliya Muray 2 марта 2017 г. 16:30
    1 марта 2017 г. 17:14
  • А что именно не заработало? Он основан на коде из статьи  https://blogs.msdn.microsoft.com/mim/2013/11/29/sending-an-email-within-a-windows-8-1-application-using-streamsocket-to-emulate-a-smtpclient/ - блог Microsoft, вроде ерунду писать не должны. Единственное непонятно как там реализовано подключение по TLS, может в этом и проблема.
    • Изменено VadimTagil 1 марта 2017 г. 18:25
    • Помечено в качестве ответа Liliya Muray 2 марта 2017 г. 16:31
    1 марта 2017 г. 18:25

Все ответы

  • Стандартной - нету. Есть https://github.com/LightBuzz/SMTP-WinRT.

    Но, если честно, я бы не рекомендовал ничего с клиентской части (любой тип приложения) слать напрямую в SMTP. Данный подход предполагает, что в коде программы должны быть зашиты логин и пароль от SMTP-сервера, так что злонамеренный пользователь с помощью отладчика может узнать их. Слать что-то нужно исключительно из серверной части.

    • Помечено в качестве ответа Liliya Muray 2 марта 2017 г. 16:30
    1 марта 2017 г. 17:14
  • Стандартной - нету. Есть https://github.com/LightBuzz/SMTP-WinRT.

    Но, если честно, я бы не рекомендовал ничего с клиентской части (любой тип приложения) слать напрямую в SMTP. Данный подход предполагает, что в коде программы должны быть зашиты логин и пароль от SMTP-сервера, так что злонамеренный пользователь с помощью отладчика может узнать их. Слать что-то нужно исключительно из серверной части.

    LightBuzz с разбегу не заработали, а плясать с бубном пока не решилась. Это будет что-то типа почтового клиента, логин и пароль будут клиентские, пусть узнает)))
    1 марта 2017 г. 17:27
  • А что именно не заработало? Он основан на коде из статьи  https://blogs.msdn.microsoft.com/mim/2013/11/29/sending-an-email-within-a-windows-8-1-application-using-streamsocket-to-emulate-a-smtpclient/ - блог Microsoft, вроде ерунду писать не должны. Единственное непонятно как там реализовано подключение по TLS, может в этом и проблема.
    • Изменено VadimTagil 1 марта 2017 г. 18:25
    • Помечено в качестве ответа Liliya Muray 2 марта 2017 г. 16:31
    1 марта 2017 г. 18:25
  • А что именно не заработало? Он основан на коде из статьи  https://blogs.msdn.microsoft.com/mim/2013/11/29/sending-an-email-within-a-windows-8-1-application-using-streamsocket-to-emulate-a-smtpclient/ - блог Microsoft, вроде ерунду писать не должны. Единственное непонятно как там реализовано подключение по TLS, может в этом и проблема.
    Я нашла пример на https://github.com/LightBuzz/SMTP-WinRT
    using (SmtpClient client = new SmtpClient("smtp.example.com", 465, false, "info@example.com", "Pa$$w0rd"))
    {
            EmailMessage emailMessage = new EmailMessage();
    
            emailMessage.To.Add(new EmailRecipient("someone1@anotherdomain.com"));
            emailMessage.CC.Add(new EmailRecipient("someone2@anotherdomain.com"));
            emailMessage.Bcc.Add(new EmailRecipient("someone3@anotherdomain.com"));
            emailMessage.Subject = "Subject line of your message";
            emailMessage.Body = "This is an email sent from a WinRT app!";
    
            await client.SendMailAsync(emailMessage);
    }
    А "EmailMessage" не находилось в пространстве имен "using LightBuzz.SMTP;" Вот и забраковала... Нашла еще "EASendMailRT". Плюс еще ваша статья, теперь точно что-то да получиться. Спасибо за ответы. По результатам позже отпишусь.

    1 марта 2017 г. 19:43
  • Они используют EMailMessage из Windows.ApplicationModel.Email, как я понял.
    2 марта 2017 г. 3:03
  • Они используют EMailMessage из Windows.ApplicationModel.Email, как я понял.

    Да вы правы они используют "Windows.ApplicationModel.Email". То я быстро заменила один EmailMessage на другой EmailMessage, не обратив внимания на то что они различаются(((.

    Еще раз спасибо. Теперь мне будет проще сравнить "LightBuzz" и "EASendMailRT". Разработчики второго уверяют, что у них работает "OAUTH2", как вроде и в присланной вами статьи, а вот "LightBuzz" уверяют, что "OAUTH2" у них пока не реализован.

    2 марта 2017 г. 6:25
  • Как и обещала, расскажу про свой опыт... Все три варианта рабочие. Но...

    https://blogs.msdn.microsoft.com/mim/2013/11/29/sending-an-email-within-a-windows-8-1-application-using-streamsocket-to-emulate-a-smtpclient/ - данный вариант отправки яндекс сразу записал в спам, как я поняла из-за того, что адрес отправителя сформирован простой строкой... можно было бы довести его до ума, но как всегда лениво...

    https://github.com/LightBuzz/SMTP-WinRT - работают чуть лучше и понятней, но они почему-то проглатывают ошибки. Плюс отправка для яндекса прошла только по порту 465, а для 587 подвисло чего-то...

    NuGet от EASendMailRT мне понравился больше остальных, так как быстро валиться с ошибкой в случае проблем. Отрабатывает отправку на оба порта 465 и 587 у яндекса. Тело письма у них собственный компонент, но думаю  смогу разобраться.

    Спасибо за помощь!

    2 марта 2017 г. 16:30