电子邮件不会发送给大量的人

本文关键字:电子邮件 | 更新日期: 2023-09-27 18:05:06

我有以下代码发送电子邮件提醒大约60个用户当提取被上传。它会发送到所有的帐户,如果我在本地运行它,但当我把它上传到服务器它不发送任何电子邮件,除非它只给一个人。我没有太多的经验与主机和服务器的东西,所以任何帮助你可以给我将是伟大的。

                if (Session["ExtractNo"].ToString() == "Extract 1")
            {
                //Connection String (SendEmail)
                string SendEmail = ConfigurationManager.ConnectionStrings["Sendmail"].ConnectionString;
                SqlDataReader reader;
                String SendMessage = "SELECT Name, Position, Email FROM AuthorisedStaff Where Position = 'CM' or Position = 'DHOD' or Position = 'HOD'"; //<---- change position before launch
                using (SqlConnection myConnection = new SqlConnection(SendEmail))
                {
                    myConnection.Open();
                    SqlCommand myCommand = new SqlCommand(SendMessage, myConnection);
                    ArrayList emailArray = new ArrayList();
                    reader = myCommand.ExecuteReader();
                    var emails = new List<EmailCode>();
                    while (reader.Read())
                    {
                        emails.Add(new EmailCode
                        {
                            Email = Convert.ToString(reader["Email"]),
                            Name = Convert.ToString(reader["Name"]),
                            Position = Convert.ToString(reader["Position"])
                        });
                    }
                    foreach (EmailCode email in emails)
                    {
                        //Email Config
                        const string username = "roll@test.ac.uk"; //account address
                        const string password = "######"; //account password
                        SmtpClient smtpclient = new SmtpClient();
                        MailMessage mail = new MailMessage();
                        MailAddress fromaddress = new MailAddress("roll@test.ac.uk", "PTLP"); //address and from name
                        smtpclient.Host = "omavex011";  //host name for particular email address
                        smtpclient.Port = 25; //port number for particular email address
                        mail.From = fromaddress;
                        mail.To.Add(email.Email);
                        mail.Subject = ("PTLP Check");
                        mail.IsBodyHtml = true;
                        //change context of message below as appropriate
                        mail.Body = HttpUtility.HtmlEncode(email.Name) + " <br /> <p>Part Time Payroll details are now available for checking.</p> ";
                        //smtpclient.EnableSsl = true;
                        smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
                        smtpclient.Credentials = new System.Net.NetworkCredential(username, password);
                        smtpclient.Send(mail);
                    }
                }
            }

电子邮件不会发送给大量的人

正如我在评论中提到的那样,您将如何使用单个SmtpClient实例:

        if (Session["ExtractNo"].ToString() == "Extract 1")
        {
            //Email Config
            const string username = "roll@test.ac.uk"; //account address
            const string password = "######"; //account password
            SmtpClient smtpclient = new SmtpClient();
            smtpclient.Host = "omavex011";  
            smtpclient.Port = 25; 
            smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtpclient.Credentials = new System.Net.NetworkCredential(username, password);
            string SendEmail = ConfigurationManager.ConnectionStrings["Sendmail"].ConnectionString;
            SqlDataReader reader;
            String SendMessage = "SELECT Name, Position, Email FROM AuthorisedStaff Where Position = 'CM' or Position = 'DHOD' or Position = 'HOD'"; //<---- change position before launch
            using (SqlConnection myConnection = new SqlConnection(SendEmail))
            {
               myConnection.Open();
               SqlCommand myCommand = new SqlCommand(SendMessage, myConnection);
               ArrayList emailArray = new ArrayList();
               reader = myCommand.ExecuteReader();
               var emails = new List<EmailCode>();
               while (reader.Read())
               {
                  emails.Add(new EmailCode { Email = Convert.ToString(reader["Email"]),
                                             Name = Convert.ToString(reader["Name"]),
                                             Position = Convert.ToString(reader["Position"])
                                            });
                                           }
                 foreach (EmailCode email in emails)
                 {
                   MailMessage mail = new MailMessage();
                   MailAddress fromaddress = new MailAddress("roll@test.ac.uk", "PTLP"); //address and from name
                   mail.From = fromaddress;
                   mail.To.Add(email.Email);
                   mail.Subject = ("PTLP Check");
                   mail.IsBodyHtml = true;
                   mail.Body = HttpUtility.HtmlEncode(email.Name) + " <br /> <p>Part Time Payroll details are now available for checking.</p> ";
                    smtpclient.Send(mail);
              }
             }
             smtpclient.Dispose();
            }