当加密连接为 TLS 时,通过 C# 发送邮件失败



我正在我的代码中设置邮件发送,如下所示

    NetworkCredential nc = new NetworkCredential(ConfigurationManager.AppSettings["EmailId"].ToString(), ConfigurationManager.AppSettings["Password"].ToString());
    MailMessage mm = new MailMessage();
    mm.From = new MailAddress(SendEmailaddress);
    mm.Body = "Test Mail";
    mm.IsBodyHtml = true;
    mm.BodyEncoding = System.Text.Encoding.UTF8;
    mm.To.Add(ToEmailAddress);
    mm.Subject = "Test";
    SmtpClient sp = new SmtpClient();
    sp.UseDefaultCredentials = false;
    sp.Credentials = nc;
    sp.EnableSsl = true;
    sp.DeliveryMethod = SmtpDeliveryMethod.Network;
    sp.Port = 587
    sp.Host = ConfigurationManager.AppSettings["SMTP"].ToString();
    sp.Send(mm);

发送邮件时引发错误。如果我在同一台PC上使用这些设置配置outlook,并使用TLS作为加密连接,则邮件发送有效。我检查了许多帖子,建议应该设置 EnableSsl = true 才能使 TLS 工作,但它对我不起作用。它抛出以下错误

事务失败。服务器响应为:5.7.1 :收件人地址被拒绝:访问被拒绝 at System.Net.Mail.RecipientCommand.CheckResponse(SmtpStatusCode 状态代码,字符串响应(在 System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, 邮件地址收集收件人,字符串传递通知, SmtpFailedRecipientException& exception( at System.Net.Mail.SmtpClient.Send(MailMessage message(

由于找不到解决方案,我遇到了障碍。 是否有需要在服务器上完成的设置?

protected void SendAlertEmail(string smtpserver, string smtpport, string smtpuser, string smtppass, int ssl, int auth, string subject, string from, string to, string body)
        {
            try
            {
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress(SplitEmailStrging(from), HttpUtility.HtmlDecode(Request.Form["senderName"]));
                string emails = to;
                if (emails.Contains(","))
                {
                    string[] emailslist = Regex.Split(emails, @",");
                    foreach (string email in emailslist)
                    {
                        mail.To.Add(SplitEmailStrging(email));
                    }
                }
                else
                {
                    if (emails.Contains("<"))
                    {
                        mail.To.Add(SplitEmailStrging(emails));
                        // Response.Write(SplitEmailStrging(emails));
                    }
                    else
                    {
                        mail.To.Add(emails);
                        // Response.Write(emails);
                    }
                }
                mail.Subject = subject;
                mail.IsBodyHtml = true;
                mail.Body = HttpUtility.HtmlDecode(body);
                SmtpClient client = new SmtpClient(smtpserver);
                if (int.Parse(smtpport) == 465)
                {
                    client.Port = 25;
                }
                else
                {
                    client.Port = int.Parse(smtpport);
                }
                if (ssl == 1)
                {
                    client.EnableSsl = true;
                }
                else
                {
                    client.EnableSsl = false;
                }
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(smtpuser, smtppass);
                client.UseDefaultCredentials = false;
                client.Credentials = credentials;
                client.Send(mail);
            }
            catch (Exception ex)
            {
                Response.Write("Error: " + ex.InnerException.Message);
                Response.End();
            }

        }

最新更新