Приложение C# dot net windows не может отправлять электронную почту на указанный идентификатор электронной почты
Привет,
Это Канчан Шарма.
Несколько дней назад я разработал систему оповещения. в этой системе я отправляю сообщение электронной почты на указанные идентификаторы электронной почты в качестве предупреждения о сроке выполнения. при запуске все работало хорошо, но знайте, что есть проблема, что приложение не может отправить оповещение по электронной почте на идентификаторы электронной почты. одна вещь, которую я должен сказать, заключается в том, что когда я выполняю приложение в visual studio, то нет никаких исключений и электронная почта отправляется правильно, но когда я устанавливаю это в системе и выполняю то же самое, то упомянутая проблема возникает. код приведен ниже:-
private void send_email_alert() { if (listView0.Items.Count > 0) { string msg = "Dear Sir/Madam<br>Please note that renewable/regular premium of given Insurance Policies are due:-<br><br>"; msg = msg + ""; //msg = msg + "<table border="1" cellpadding="1" cellspacing="1"><tbody><tr><td>SR.NO.</td><td>INSURED NAME</td><td>POLICY NUMBER</td><td>COMPANY NAME</td><td>DUE DATE</td></tr></tbody></table>"; int ckk = 0; for (int kk = 0; kk < listView0.Items.Count; kk++) { if (listView0.Items[kk].SubItems[4].Text == "0") { ckk++; msg = msg + ""; //msg = msg + ""; } } msg = msg + "<table><tbody><tr><td>SR.NO.</td><td>INSURED NAME</td><td>POLICY NUMBER</td><td>COMPANY NAME</td><td>DUE DATE</td></tr><tr><td>" + ckk + "</td><td>" + listView0.Items[kk].SubItems[0].Text + "</td><td>" + listView0.Items[kk].SubItems[1].Text + "</td><td>" + listView0.Items[kk].SubItems[2].Text + "</td><td>" + listView0.Items[kk].SubItems[3].Text + "</td></tr><tr><td>" + ckk + "</td><td>" + listView0.Items[kk].SubItems[0].Text + "</td><td>" + listView0.Items[kk].SubItems[1].Text + "</td><td>" + listView0.Items[kk].SubItems[2].Text + "</td><td>" + listView0.Items[kk].SubItems[3].Text + "</td></tr></tbody></table>"; if (ckk > 0) { int chkalrt = 0; string mail_srvr = ""; int mail_port = 0; string authID = ""; string authPass = ""; string mail_to = ""; try { System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(); con.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data source=.\\MSCFRM.mdb"; con.Open(); System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("SELECT alrt_sts_mail, mail_srvr, mail_to, smtpPort, authEmailId, authPass from alert_setting_tab where sec_name = 'INSURANCE'", con); System.Data.OleDb.OleDbDataReader dr; dr = cmd.ExecuteReader(); dr.Read(); chkalrt = int.Parse(dr["alrt_sts_mail"].ToString()); mail_srvr = dr["mail_srvr"].ToString(); mail_to = dr["mail_to"].ToString(); mail_port = int.Parse(dr["smtpPort"].ToString()); authID = dr["authEmailId"].ToString(); authPass = dr["authPass"].ToString(); dr.Close(); con.Close(); } catch (Exception exp) { chkalrt = 0; mail_srvr = ""; mail_to = ""; MessageBox.Show("Could not get the Insurance Premium e-mail alert detail, due to internal error. It will be retried again on next alert. \nError: " + exp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (mail_to == "" || mail_srvr == "") { MessageBox.Show("Could not sent the Insurance Premium e-mail alert. Receiver E-mail ID or E-Mail Hosting Server detail are not available.", "Alert : Null values found", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (chkalrt == 1) { try { SmtpClient sc = new SmtpClient(); MailMessage mail_msg = new MailMessage(); MailAddress madd; //assigning smtp server host through which mail is to be send sc.Host = mail_srvr; sc.Port = mail_port; System.Net.NetworkCredential nc = new System.Net.NetworkCredential(authID, authPass); sc.Credentials = nc; //if (ValidateEmail(FromTextBox.Text) == true) //{ // sendfrom = FromTextBox.Text; //} //else //{ // MessageBox.Show("Mail Address is Invalid or Subject is Blank.", "Alert : Invalid values", MessageBoxButtons.OK, MessageBoxIcon.Error); // return; //} madd = new MailAddress("pilrs_system_alert@comethandicrafts.com"); mail_msg.From = madd; //if (ValidateEmail(ToTextBox.Text) == true) //{ mail_msg.To.Add(mail_to); //} //else //{ // MessageBox.Show("Mail Address is Invalid or Subject is Blank.", "Alert : Invalid values", MessageBoxButtons.OK, MessageBoxIcon.Error); // return; //} //if (CcTextBox.Text != "") //{ // mail_msg.CC.Add(CcTextBox.Text); //} //if (BccTtextBox.Text != "") //{ // mail_msg.Bcc.Add(BccTtextBox.Text); //} mail_msg.Subject = "Insurance Policy Renewable/Regular Premium Due Alert"; msg = msg + "<br><br>Regards<br>PILRS SYSTEM (Phone-Insurance-LoansEmi-Registration-SaleChart Management System)<br><br>This is an auto generated mail, please do not reply."; mail_msg.IsBodyHtml = true; mail_msg.Body = msg; //if (AttachmentTextBox.Text != "") //{ // Attachment atch; // string sfile = AttachmentTextBox.Text; // atch = new Attachment(sfile); // mail_msg.Attachments.Add(atch); //} //sc.SendCompleted += new SendCompletedEventHandler(sc_SendCompleted); //client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback); //send mail to reciever sc.Send(mail_msg); update_due_sts(); //mail_msg.Dispose(); //sc.Dispose(); //if (mail_sent == true) //MessageBox.Show("Insurance message is sent succesfully.", "Alert : Sent", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception exp) { MessageBox.Show("Could not sent the Insurance Premium e-mail alert, due to internal error. It will be retried again on next alert. \nError: " + exp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } }
[edit]добавлен блок кода-OriginalGriff [/edit]
Что я уже пробовал:
Самооценка для приложения c# dot net windows не может отправить электронное письмо на указанный идентификатор электронной почты
F-ES Sitecore
Если это работает на удаленном сервере и есть проблема, кто нажимает на кнопку "ОК", чтобы отменить диалоги, чтобы код мог продолжать работать?
В соответствии с решением 1 вам нужно начать регистрировать такие вещи, как почтовый сервер и адреса электронной почты, и связаться с администраторами почтовых серверов, чтобы узнать, были ли предприняты попытки доставки сообщений и могут ли они пролить свет на то, что с ними произошло. Кроме того, если это предназначено для запуска без присмотра, избавьтесь от ваших MessageBox и замените их кодом регистрации, чтобы весь процесс не зависал.