Specify STARTTLS credentials in XML file which is called by a C# program

Lee 0 Reputation points
2023-01-12T11:58:55.32+00:00

We have an old program which i believe is built using C# for which i have the source code but i cannot edit the program. The issue is we have moved our email to a new provider who is using STARTTLS for sending emails and our program is now failing to send a simple email and returning the error below;

sendemail - Error in processing. The server response was: 5.7.3 STARTTLS is required to send mail [LO4P123CA0676.GBRP123.PROD.OUTLOOK.COM]

We have an XML file which we can change the values of but i cannot see anywhere to add anything to allow the STARTTLS to work.

The XML file contains the following;

<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>

The C# code is shown below (which we are not able to edit)

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();

        }

    }

Any advice will be greatly appreciated.

C#
C#
An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
11,201 questions
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.