K N Sharma Ответов: 1

Приложение 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 и замените их кодом регистрации, чтобы весь процесс не зависал.

1 Ответов

Рейтинг:
2

OriginalGriff

Начните с редактирования вашего вопроса и вырывания закомментированного кода - он не имеет отношения к проблеме, поэтому он нам не нужен; или он нам нужен, он просто мешает.

Затем попытайтесь сузить круг ваших проблем. Мы не можем запустить ваш код при тех же обстоятельствах, что и вы, поэтому мы не можем получить никакой информации, кроме той, которую Вы нам даете, а это, честно говоря, не так уж много. И поскольку он работает в вашей системе разработки, но не в производстве, мы все равно не можем точно имитировать то, что вы делаете.

Так что вам придется регистрировать то, что происходит - хорошее и плохое, - чтобы вы могли просмотреть это. Добавьте инструкции, чтобы добавить в файл журнала процесс через это, и точно то, что происходит: отметка даты и времени, запись того, что вы отправляете, и того, что не удается отправить. Это может быть так же просто, как ваша почтовая система имеет дроссель, который предотвращает отправку более 1000 писем в час, например (мой хостинг делает это, чтобы предотвратить его использование в качестве фермы спама). Или может быть, что есть общий фактор с адресами электронной почты или содержанием электронной почты, который мешает ему работать. Или может быть так, что данные авторизации работают только на вашем компьютере разработчика.
Мы не знаем - и не можем узнать, потому что у нас нет доступа к вашим системам или почтовому серверу, - поэтому вам придется собрать информацию и начать рассматривать ее с помощью тонкой зубчатой расчески.