Отправка электронной почты в .NET через Gmail

Насколько мне известно, и вопреки тому, что сказал Норман, потоковое слияние - это , а не , реализованное в настоящее время в базе GHC (т. е. вы не можете просто использовать функции Prelude). Для получения дополнительной информации см. билет GHC 915 .

Чтобы использовать потоковое слияние, вам необходимо установить библиотеку потокового фьюжн, импортировать Data.List.Stream (вы также можете импортировать Control.Monad .Stream) и использовать только функции из этого модуля, а не функции Prelude. Это означает, что Prelude скрывает все функции списка по умолчанию и не использует конструкцию [x..y] или понимание списка.

831
задан Sameer 16 November 2017 в 01:50
поделиться

2 ответа

Обязательно используйте System.Net.Mail, не устаревшее System.Web.Mail. Выполнение SSL с System.Web.Mail является грубой путаницей hacky расширений.

using System.Net;
using System.Net.Mail;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}
1023
ответ дан Sam 16 November 2017 в 01:50
поделиться

Вышеупомянутый ответ не работает. Необходимо установить DeliveryMethod = SmtpDeliveryMethod.Network, или это возвратится с" , клиент не аутентифицировался " ошибка. Также это всегда - хорошая идея поместить тайм-аут.

Пересмотренный код:

using System.Net.Mail;
using System.Net;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@yahoo.com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
    Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}
149
ответ дан nawfal 16 November 2017 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: