【问题标题】:Specify STARTTLS credentials in XML file which is called by a C# program在 C# 程序调用的 XML 文件中指定 STARTTLS 凭据
【发布时间】:2023-01-12 23:44:23
【问题描述】:

我们有一个旧程序,我相信它是使用 C# 构建的,我有它的源代码,但我无法编辑该程序。问题是我们已将电子邮件移至使用 STARTTLS 发送电子邮件的新提供商,而我们的程序现在无法发送简单的电子邮件并返回以下错误;

sendemail - 处理错误。服务器响应是:5.7.3 STARTTLS is required to send mail [LO4P123CA0676.GBRP123.PROD.OUTLOOK.COM]

我们有一个 XML 文件,我们可以更改其值,但我看不到任何地方可以添加任何内容以允许 STARTTLS 工作。

XML 文件包含以下内容;

<Sage200_ImportSLsettings>
<FileLocation>
<FileLocation>D:\Sage\Sage Import Files</FileLocation>
<Company>Volmary Ltd</Company>
<MailServer>smtp-mail.outlook.com</MailServer>
<MailTo>email</MailTo>
<MailFrom>email</MailFrom>
</FileLocation>
</Sage200_ImportSLsettings>

C# 代码如下所示(我们无法编辑)

private void ReadXMLforConnectionDetails()
        {
            try
            {
                string path = Path.GetDirectoryName(Application.ExecutablePath) + @"\@CPS_Sage200_SLImport.xml";
                if (File.Exists(path))
                {
                    IEnumerator enumerator;
                    XmlDocument document = new XmlDocument();
                    document.Load(path);
                    XmlNamespaceManager nsmgr = new XmlNamespaceManager(document.NameTable);
                    XmlNodeList list = document.DocumentElement.SelectNodes("/Sage200_ImportSLsettings/FileLocation", nsmgr);
                    try
                    {
                        XmlNode current;
                        enumerator = list.GetEnumerator();
                        goto TR_0018;
                    TR_0008:
                        try
                        {
                            this.MailFrom = current["MailFrom"].InnerText;
                        }
                        catch (Exception exception5)
                        {
                            ProjectData.SetProjectError(exception5);
                            this.MailFrom = "";
                            ProjectData.ClearProjectError();
                        }
                        goto TR_0018;
                    TR_000B:
                        try
                        {
                            this.MailTo = current["MailTo"].InnerText;
                        }
                        catch (Exception exception4)
                        {
                            ProjectData.SetProjectError(exception4);
                            this.MailTo = "";
                            ProjectData.ClearProjectError();
                        }
                        goto TR_0008;
                    TR_000E:
                        try
                        {
                            this.MailServer = current["MailServer"].InnerText;
                        }
                        catch (Exception exception3)
                        {
                            ProjectData.SetProjectError(exception3);
                            this.MailServer = "";
                            ProjectData.ClearProjectError();
                        }
                        goto TR_000B;
                    TR_0011:
                        try
                        {
                            this.SageCompany = current["Company"].InnerText;
                        }
                        catch (Exception exception2)
                        {
                            ProjectData.SetProjectError(exception2);
                            this.SageCompany = "";
                            ProjectData.ClearProjectError();
                        }
                        goto TR_000E;
                    TR_0018:
                        while (true)
                        {
                            if (enumerator.MoveNext())
                            {
                                current = (XmlNode) enumerator.Current;
                                try
                                {
                                    this.FileLocation = current["FileLocation"].InnerText;
                                }
                                catch (Exception exception1)
                                {
                                    ProjectData.SetProjectError(exception1);
                                    this.FileLocation = "";
                                    ProjectData.ClearProjectError();
                                }
                            }
                            else
                            {
                                this.ConnecttoSage200();
                                return;
                            }
                            break;
                        }
                        goto TR_0011;
                    }
                    finally
                    {
                        if (enumerator is IDisposable)
                        {
                            (enumerator as IDisposable).Dispose();
                        }
                    }
                }
                this.WritetoErrorLog("ReadXMLforConnectionDetails() - File does not exist. " + path);
                Application.Exit();
            }
            catch (Exception exception6)
            {
                Exception ex = exception6;
                ProjectData.SetProjectError(ex);
                Exception exception = ex;
                this.WritetoErrorLog("ReadXMLforConnectionDetails() - " + exception.Message);
                Application.Exit();
                ProjectData.ClearProjectError();
            }
        }

        private void sendemail(string MailSubject, string Emailbody)
        {
            try
            {
                MailMessage message = new MailMessage();
                SmtpClient client = new SmtpClient(this.MailServer);
                message.From = new MailAddress("\"CPS - Sage200 SL Import\"<" + this.MailFrom + ">");
                message.To.Add(new MailAddress(this.MailTo));
                message.Subject = MailSubject;
                message.IsBodyHtml = false;
                message.Body = Emailbody;
                client.Credentials = new NetworkCredential("email", "password");
                client.Send(message);
                message.Dispose();
            }
            catch (Exception exception1)
            {
                Exception ex = exception1;
                ProjectData.SetProjectError(ex);
                Exception exception = ex;
                this.WritetoErrorLog("sendemail - " + exception.Message);
                Application.Exit();
                ProjectData.ClearProjectError();
            }
        }

任何建议将不胜感激。

【问题讨论】:

    标签: c# xml smtp


    【解决方案1】:

    该代码中没有将 SmtpClient 配置为使用 STARTTLS 的逻辑,因此您无法添加 XML 标记以使其使用它。

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 2014-11-10
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多