отправка почты, событие
От: t_a_n_k Россия http://www.ufastudio.ru
Дата: 10.04.06 05:17
Оценка:
Привет всем!
Никак не пойму почему почта отправляется не по событию...
например, пытаюсь отправить письмо по нажатию на кнопку:

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                SmtpClient client = new SmtpClient("myserver", 25);
                System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();

                message.From = new MailAddress("from@mail.ru");
                message.To.Add(new MailAddress("to@mail.ru"));
                message.Subject = txtSub.Text;
                message.Body = txtBody.Text;
                client.Credentials = new NetworkCredential("user", "pass");
                client.Send(message);
                lblEror.Text = "Письмо отправлено.";
            }
            catch (SmtpException ex)
            {
                lblEror.Text="Ошибка отправки почты:\n" + ex.ToString();
            }
        }

Однако письмо реально отправляется только при завершении работы приложения.
Ткните плиз, носом где грабли. Спасибо.
...Безумству храбрых поем мы песню... (с) М.Горький
Re: отправка почты, событие
От: ie Россия http://ziez.blogspot.com/
Дата: 10.04.06 05:40
Оценка:
Здравствуйте, t_a_n_k, Вы писали:

___>Однако письмо реально отправляется только при завершении работы приложения.

___>Ткните плиз, носом где грабли. Спасибо.

А когда выстреливает событие SmtpClient.SendCompleted ??
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Превратим окружающую нас среду в воскресенье.
Re[2]: отправка почты, событие
От: t_a_n_k Россия http://www.ufastudio.ru
Дата: 10.04.06 05:48
Оценка:
Здравствуйте, ie, Вы писали:
ie>А когда выстреливает событие SmtpClient.SendCompleted ??

добавил

client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);

и

        void client_SendCompleted(object sender, AsyncCompletedEventArgs e)
        {
            MessageBox.Show("!!!");
        }


Вообще не вижу чтобы событие наступало...
...Безумству храбрых поем мы песню... (с) М.Горький
Re[2]: отправка почты, событие
От: ie Россия http://ziez.blogspot.com/
Дата: 10.04.06 05:50
Оценка:
Здравствуйте, ie, Вы писали:

ie>Здравствуйте, t_a_n_k, Вы писали:


___>>Однако письмо реально отправляется только при завершении работы приложения.

___>>Ткните плиз, носом где грабли. Спасибо.

ie>А когда выстреливает событие SmtpClient.SendCompleted ??


Упс.. Сорри, сперва понял, что вы письмо асинхронно посылаете...
А при вызове SmtpClient.Send() сообщение должно трансмититься на smtp сервер и лишь потом происходит возврат.
С SmtpClient.Send() никогда проблем небыло с SmtpClient.SendAsync() были. Почему-то не всегда сообщение доставлялось, т.е. в >99% случаев все было ок, но иногда просто не отправлялось безовсяких сообщений об ошибке и исключений. Боролись так: ждали какой-то интервал времени, Cancel'или и стартовали заново.
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Превратим окружающую нас среду в воскресенье.
Re[3]: отправка почты, событие
От: ie Россия http://ziez.blogspot.com/
Дата: 10.04.06 05:54
Оценка:
Здравствуйте, t_a_n_k, Вы писали:

ie>>А когда выстреливает событие SmtpClient.SendCompleted ??

___>Вообще не вижу чтобы событие наступало...

Да, я вас сперва не правильно понял, я тут написал уже в ответе на свою мессагу. А вообще, странный какой-то случай. А время отсылки сообщения постоянна? Я имею ввиду, что сообщение всегда отсылается при закрытии приложения или просто отправка происходит долго? Дело ведь еще может быть в SMTP сервере..
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Превратим окружающую нас среду в воскресенье.
Re[4]: отправка почты, событие
От: t_a_n_k Россия http://www.ufastudio.ru
Дата: 10.04.06 06:03
Оценка:
Здравствуйте, ie, Вы писали:
ie>Да, я вас сперва не правильно понял, я тут написал уже в ответе на свою мессагу. А вообще, странный какой-то случай. А время отсылки сообщения постоянна? Я имею ввиду, что сообщение всегда отсылается при закрытии приложения или просто отправка происходит долго? Дело ведь еще может быть в SMTP сервере..

Отправка происходит имеено при закрытии приложения. Ждал долго, дело точно не в тормозах сервера. Если отправлять вот так (юзать WebMail):

        private void button3_Click(object sender, EventArgs e)
        {
            System.Web.Mail.MailMessage mailMessage = new System.Web.Mail.MailMessage();
            mailMessage.From = "from@mydomen.ru";
            mailMessage.To = "to@mydomen.ru";
            mailMessage.Subject = "sub";
            mailMessage.Body = "body";
            try
            {
                System.Web.Mail.SmtpMail.SmtpServer = "myserver";
                System.Web.Mail.SmtpMail.Send(mailMessage);
                lblEror.Text = "Сообщение отправлено";
            }
            catch (Exception err)
            {
                lblEror.Text="Ошибка отправки почты:\n" + err.ToString();
            }
        }

То письмо отправляется без проблем... Правда только внутри домена...
...Безумству храбрых поем мы песню... (с) М.Горький
отправка почты, событие
От: Аноним  
Дата: 28.08.06 03:16
Оценка:
Столкнулся с аналогичной бедой, исправил так
try{......
............


string userState = "test message1";
client.SendAsync(message,userState);

lblEror.Text = "Письмо отправлено.";}
catch ........


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: отправка почты, событие
От: BluntBlind  
Дата: 28.08.06 03:44
Оценка:
Здравствуйте, t_a_n_k, Вы писали:

___>Привет всем!

___>Никак не пойму почему почта отправляется не по событию...
___>например, пытаюсь отправить письмо по нажатию на кнопку:

Сам с этим не работал, могу лишь предположить. MailMessage объявлен так:

public class MailMessage : IDisposable


Вы Dispose те вызываете. Когда приложение закрывается, то он вызывается GC и только тогда оно уходит.

Добавте вызов Dispose() ...
Re: отправка почты, событие
От: DioNNis http://i-liger.com
Дата: 28.08.06 06:27
Оценка:
Кроме всего вышесказанного....
Если ты собрался писать приложение для анонимной отправки писем, то с общеизвестными серваками у тебя такой номер не прокатит, потому как они требуют авторизации... Для этого существует специальный класс.
Владея информацией, владеешь миром. Уинстон Черчилль
Re[2]: отправка почты, событие
От: 4erniyPlasch Россия  
Дата: 08.01.08 17:10
Оценка:
Здравствуйте, DioNNis, Вы писали:

DNN>Кроме всего вышесказанного....

DNN>Если ты собрался писать приложение для анонимной отправки писем, то с общеизвестными серваками у тебя такой номер не прокатит, потому как они требуют авторизации... Для этого существует специальный класс.



Ребят, а не приведете кусок кода для отправки через mail.ru. Я чего уже только не перепробовал — так письма и не отправляются. Вываливается ошибка, мол не могу отправить письмо.

Подозреваю, что я с credentials что-то не так делаю.



Спасибо.
Re[3]: отправка почты, событие
От: sanap  
Дата: 18.06.09 05:05
Оценка:
Здравствуйте, 4erniyPlasch, Вы писали:

P>Здравствуйте, DioNNis, Вы писали:


DNN>>Кроме всего вышесказанного....

DNN>>Если ты собрался писать приложение для анонимной отправки писем, то с общеизвестными серваками у тебя такой номер не прокатит, потому как они требуют авторизации... Для этого существует специальный класс.



P>Ребят, а не приведете кусок кода для отправки через mail.ru. Я чего уже только не перепробовал — так письма и не отправляются. Вываливается ошибка, мол не могу отправить письмо.


P>Подозреваю, что я с credentials что-то не так делаю.




P>Спасибо.


Да, действительно, вот так вот (VB) почта отправляется сразу, без закрытия формы:
'---------------------------------------------------------------------------------------------------------------------------------------
Dim mailMsg As New System.Web.Mail.MailMessage
Dim SmtpMail As New Net.Mail.SmtpClient
With mailMsg
.From = String.Format("{0}@###.ru", Replace(My.User.Name, "SPB\", ""))
.To = "user1@###.ru"
.Subject = "Баланс"
.Body = "Выписка:"
.Priority = CType("222", Net.Mail.MailPriority)
End With
System.Web.Mail.SmtpMail.SmtpServer = "SMTP.###.ru"
Try
System.Web.Mail.SmtpMail.Send(mailMsg)
MessageBox.Show("Сообщение было отправлено!", "Email Send Status", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch exp As Exception
MessageBox.Show("Была обнаружена ошибка: " & exp.Message, "...", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
'---------------------------------------------------------------------------------------------------------------------------------------

Благодарю форумёров за подсказку.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.