Лучший отвечающий
SendMail. How send mail, where error windows?

Вопрос
-
Goode day. Sai me where error. Here code, but is exception and message not send. Help me.
MailAddress to = new MailAddress("avrudoi@yandex.ru"); MailAddress from = new MailAddress("Nevedimka@contoso.com"); MailMessage message = new MailMessage(from, to); message.Subject = "Using the new SMTP client."; message.Body = @"Using this new feature, you can send an e-mail message from an application very easily."; // Use the application or machine configuration to get the // host, port, and credentials. SmtpClient client = new SmtpClient(); Console.WriteLine("Sending an e-mail message to {0} at {1} by using the SMTP host={2}.", to.User, to.Host, client.Host); try { client.Send(message); } catch (Exception ex) { Console.WriteLine("Exception caught in CreateTestMessage3(): {0}", ex.ToString()); }
16 июня 2013 г. 13:12
Ответы
-
Все оно работает :)
Создал консольку, вот полный исходный код:
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Mail; using System.Windows.Forms; namespace ConsoleAppMail { class Program { private static void Main() { SendMessage("Имя", "почта", "тело сообщения", "пароль от почты", "почта получателя", "тема письма"); // проверял на gmail.com работает } public static void SendMessage(string strName, string strLog, string strText, string strPass, string outMail, string strSubject) { try { // обнулим на всяк случай string smtp = ""; int port = 0; // здесь не уверен на счет портов // может (скорее всего) они неправильны, но если что // это все легко гуглится ;) парвильный только gmail.com var mailCoding = new Dictionary<string, int> { {"gmail.com", 587}, {"yandex.ru", 225}, {"mail.ru", 235}, {"list.ru", 254}, {"inbox.ru", 215}, {"bk.ru", 255} }; // поиск нужного порта и smtp при отправке // можно так сделать, но нет мы КРУТЫЕ // и напишем с помощью LINQ //foreach (var kvp in mailCoding) //{ // if (strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1) // { // smtp = "smtp." + kvp.Key; // port = kvp.Value; // } //} foreach (var kvp in mailCoding.Where(kvp => strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1)) { smtp = "smtp." + kvp.Key; port = kvp.Value; } using (var mailMessage = new MailMessage(strName + " <" + strLog + ">", outMail)) { mailMessage.Subject = strSubject; // тема письма mailMessage.Body = strText; // письмо mailMessage.IsBodyHtml = false; // без html, но можно включить using (var sc = new SmtpClient(smtp, port)) { sc.EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential(strLog, strPass); sc.Send(mailMessage); } } } catch (Exception exception) { MessageBox.Show(exception.Message, "Ошибка"); } } } }
- Предложено в качестве ответа YatajgaModerator 16 июня 2013 г. 19:36
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 17 июня 2013 г. 6:37
16 июня 2013 г. 18:58 -
Пропишите в блоке
using (var sc = new SmtpClient(smtp, port))
{
.....
sc.Timeout = 30000;
.....
}
И если вы отправляете письма не с gmail то исправьте smtp и порт.
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 17 июня 2013 г. 6:37
16 июня 2013 г. 19:26
Все ответы
-
чтото у меня ваш код нетработает все вроде пральвильно.
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { SendMessage("проба", "proba"); } public void SendMessage(string strText, string TemaMail) { try { // обнулим на всяк случай //string smtp = ""; //int port = 0; // здесь не уверен на счет портов // может (скорее всего) они неправильны, но если что // это все легко гуглится ;) парвильный только gmail.com /*var mailCoding = new Dictionary<string int=""> { {"gmail.com", 587}, {"yandex.ru", 225}, {"mail.ru", 235}, {"list.ru", 254}, {"inbox.ru", 215}, {"bk.ru", 255} }; // поиск нужного порта и smtp при отправке // можно так сделать, но нет мы КРУТЫЕ // и напишем с помощью LINQ //foreach (var kvp in mailCoding) //{ // if (strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1) // { // smtp = "smtp." + kvp.Key; // port = kvp.Value; // } //} foreach (var kvp in mailCoding.Where(kvp => strLog.IndexOf(kvp.Key, StringComparison.Ordinal) > -1)) { smtp = "smtp." + kvp.Key; port = kvp.Value; } */ using (var mailMessage = new MailMessage("*@yandex.ru", "*@yandex.com"))// куда, кто { mailMessage.Subject = TemaMail; // тема письма mailMessage.Body = strText; // письмо mailMessage.IsBodyHtml = false; // без html, но можно включить using (var sc = new SmtpClient("smtp.yandex.ru", 465)) { sc.EnableSsl = true; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.UseDefaultCredentials = false; sc.Credentials = new NetworkCredential("mishanak941", "*");// кто, пароль sc.Send(mailMessage); } } } catch (Exception exception) { MessageBox.Show(exception.Message, "Ошибка"); } } }
- Изменено avrudoi 16 июня 2013 г. 18:14
16 июня 2013 г. 18:11 -
а что смоим кодом, он работает, только выдает сообщение о том, что искает время ожидания, вчем может быть проблемма16 июня 2013 г. 19:18