2010-11-30 3 views
5

Можно создать дубликат:
Sending email through Gmail SMTP server with C#Как отправить сообщение на C# с помощью SMTP-сервера Gmail?

Для рассылки с C# и использовать сервер Gmail SMTP есть любой вид сложной вещи, что мы должны делать? Потому что после многих поисков я нашел несколько способов сделать это, но в результате я получаю исключение сбоя. Я думаю, это потому, что я не обрабатываю TSL для Gmail (потому что он работает с TSL), но я не знаю, как обращаться с TSL с C# для этого. Я очень ценю любую помощь или ссылку на полезный образец. Вот мой код:

public string SendMail(string senderMail, string receiverMail, string attachmentPath) 
{ 
    var fromMailAddress = new MailAddress(senderMail); 
    var toMailAddress = new MailAddress(receiverMail); 

    MailMessage mailMessage = new MailMessage(fromMailAddress, toMailAddress); 
    mailMessage.Subject = "My Subject"; 
    mailMessage.Body = "This is the body of this message for testing purposes"; 

    Attachment attachFile = new Attachment(attachmentPath); 
    mailMessage.Attachments.Add(attachFile); 

    SmtpClient emailClient = new SmtpClient(); 

    NetworkCredential credential = new NetworkCredential(); 
    credential.UserName = fromMailAddress.User; 
    credential.Password = "password"; 

    emailClient.Credentials = credential; 
    emailClient.Port = 587; 
    emailClient.Host = "smtp.gmail.com"; 

    //emailClient.EnableSsl = true; //Here should be for TSL, but how? 

    emailClient.Send(mailMessage); 
} 
+0

позвольте спросить! : P – Seva 2010-11-30 12:51:57

+0

Добро пожаловать в SO! Это хороший вопрос, и вы приложили правильный код. Однако аналогичный вопрос был задан раньше, см. Ссылку выше. Возможно, вы столкнулись с особым исключением; в этом случае люди могут помочь вам лучше, если вы разместите точное сообщение об исключении. – Marijn 2010-11-30 13:04:26

ответ

1

Вы должны сообщить сообщение об исключении. Но да, раскомментируйте, что emailClient.EnableSsl = true; Если он все еще не работает, ваш брандмауэр или маршрутизатор, вероятно, блокируют порты.

5

Попробуйте использовать следующий код. Это рабочий код, который я использую в течение длительного времени.

// Configure mail client (may need additional 
    // code for authenticated SMTP servers). 
    SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); 

    // Set the network credentials. 
    mailClient.Credentials = new NetworkCredential("[email protected]", "YourGmailPassword"); 

    //Enable SSL. 
    mailClient.EnableSsl = true; 

    // Create the mail message (from, to, subject, body). 
    MailMessage mailMessage = new MailMessage(); 
    mailMessage.From = new MailAddress("[email protected]"); 
    mailMessage.To.Add(to); 

    mailMessage.Subject = subject; 
    mailMessage.Body = body; 
    mailMessage.IsBodyHtml = isBodyHtml; 
    mailMessage.Priority = mailPriority; 

    // Send the mail. 
    mailClient.Send(mailMessage); 

Код: Sending Email using a Gmail Account.

Смежные вопросы