2014-11-13 1 views
1

Я хочу отправить электронное письмо с помощью приложения консоли C#. Я нашел исходники, которые в основном похожи друг на друга. Но моя проблема, я думаю, я не знаю, как это сделать.C# SMTP отправка почты

  • Я думаю, там должен быть сервер smtp, который установлен где-то. Я дал IP-адрес сервера и сказал его сервер обмена. Поэтому я попытался использовать его в качестве адреса сервера в исходном коде.
  • Я использовал данные криляли, связанные с этим сервером. Но каждый раз, когда я получил «почтовый ящик недоступен ответ сервера был:. 5.7.1 Невозможно передать ошибка» ..
  • Тогда я попытался How to set up SMTP server on Windows 7 это, но я думаю, что для клиента установки SMTP слой не надо ..

Итак, как я могу решить эту проблему?

Спасибо ..

ответ

1

That's именно то, что я делаю, чтобы отправить электронную почту. Вот код (вы должны заменить порт, сервера и enablessl с правильными значениями)

public static void SendMail(string addressTo, string addressFrom, string mailSubject, string mailBody) 
    { 
     NetworkCredential myCredential = new NetworkCredential(_userName, _passWord); 

     SmtpClient client = new SmtpClient(); 
     client.Host = "99.99.127.233"; 
     client.Port = 417; 
     client.DeliveryMethod = SmtpDeliveryMethod.Network; 
     client.UseDefaultCredentials = false; 
     client.Credentials = myCredential; 
     client.EnableSsl = true; 

     MailAddress from = new MailAddress(addressFrom); 
     MailAddress to = new MailAddress(addressTo); 
     MailMessage message = new MailMessage(from, to); 
     message.Body = mailBody; 
     message.BodyEncoding = System.Text.Encoding.UTF8; 
     message.Subject = mailSubject; 
     message.SubjectEncoding = System.Text.Encoding.UTF8; 
     client.Send(message); 
    } 
1

У меня была такая же проблема с smtp.gmail.com. Я включил «Доступ для менее безопасных приложений» и отключил двухэтапную аутентификацию. Это сработало.

попробуйте этот код

   MailMessage message = new MailMessage("[email protected]", "[email protected]"); 
       message.Subject = "Subject"; 
       string body = "Mail Body"; 
       message.Body = body; 
       SmtpClient smtpClient = new SmtpClient(); 
       smtpClient.Host = "smtp.gmail.com"; 
       smtpClient.EnableSsl = true; 
       NetworkCredential networkCredentials = new NetworkCredential("[email protected]", "<password>"); 
       smtpClient.UseDefaultCredentials = false; 
       smtpClient.Credentials = networkCredentials; 
       smtpClient.Port = 587; 
       smtpClient.Send(message); 
0

Я делаю подобную вещь на данный момент, только в форме Windows. Я использую библиотеку EASendMail (https://www.emailarchitect.net/easendmail). Она имеет различные классы, такие как стандартный класс почты, который вы можете использовать, как это:

void SmtpSend(string from, string to, string subject, string body) 
    { 
     // \/ Use 
     EASendMail.SmtpMail testMail = new EASendMail.SmtpMail("test"); 
     testMail.From = from; 
     testMail.To = to; 
     testMail.Subject = subject; 
     testMail.TextBody = body; 
     // Alternatively, you can use HTML bodies with testMail.HtmlBody = "<html><head></head><body></body>" etc. 
     // Just play around with it. 
     // \/ Use the SmtpClient class to send your SmtpMail objects \/ 
     EASendMail.SmtpClient smtpClient = new EASendMail.SmtpClient(); 
     smtpClient.Credentials = new NetworkCredentials("username", "password"); 
     smtpClient.SendMail(testMail); 
    } 

    void main() 
    { 
     SmtpSend("[email protected]", "[email protected]", "Test Mail", "Test Body"); 
    } 

Вы также можете использовать SmtpServer объект если хотите подключиться к серверу напрямую:

  SmtpServer smtpgm = new SmtpServer("smtp.gmail.com"); 
      EASendMail.SmtpClient cln = new EASendMail.SmtpClient(); 
      smtpgm.Port = 587; 
      smtpgm.User = Console.ReadLine(); 
      smtpgm.Password = Console.ReadLine(); 
      smtpgm.Alias = "W"; 
      smtpgm.Protocol = ServerProtocol.SMTP;    
      smtpgm.ConnectType = SmtpConnectType.ConnectSTARTTLS;