Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XmlReader其他选项_C#_Xml_Winforms - Fatal编程技术网

C# XmlReader其他选项

C# XmlReader其他选项,c#,xml,winforms,C#,Xml,Winforms,我目前正在为我工作的公司申请一份工作。此应用程序的一部分处理差异报告,并在创建新的差异编号时发送电子邮件。首先,认识到我正在将这个应用程序从VB.NET重新开发到C#是很重要的。在旧的应用程序中,开发人员选择读取几个电子邮件地址的XML文件。我已经读过使用替代选项的书,除非XML文件中充满了信息。这并不是一个固执己见的问题,如果这听起来像是一个问题,那么很抱歉。然而,我正在寻找正确的方法。是否应将这些电子邮件地址保存在数据库表中以便于添加/删除,或者是否有更标准的方法来执行此操作?请在下面查找当

我目前正在为我工作的公司申请一份工作。此应用程序的一部分处理差异报告,并在创建新的差异编号时发送电子邮件。首先,认识到我正在将这个应用程序从VB.NET重新开发到C#是很重要的。在旧的应用程序中,开发人员选择读取几个电子邮件地址的XML文件。我已经读过使用替代选项的书,除非XML文件中充满了信息。这并不是一个固执己见的问题,如果这听起来像是一个问题,那么很抱歉。然而,我正在寻找正确的方法。是否应将这些电子邮件地址保存在数据库表中以便于添加/删除,或者是否有更标准的方法来执行此操作?请在下面查找当前代码

public void PrepareEmail(string subject, string message)
{

    if (MessageBox.Show(@"Are you sure you want to save and send Discrepancy Report: " + tbxDRNumber.Text + @"?\n Click YES to save\n Click NO to cancel", @"Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
    {

        SendEmail(subject, message);
    }
}

public Array AddEmail()
{

    string[] dRemail = { "", "", "" };

    if (File.Exists(@"\\fs01\Applications\EMS-Manager\DREmailAddresses.xml"))
    {
        XmlReader emailDocument = new XmlTextReader(@"\\fs01\Applications\EMS-Manager\DREmailAddresses.xml");

        while (emailDocument.Read())
        {
            var type = emailDocument.NodeType;

            switch (type)
            {
                case XmlNodeType.Element:
                    if (emailDocument.Name == "DRCreatedAddEmail")
                    {
                        dRemail[0] = emailDocument.ReadInnerXml();
                    }
                    if (emailDocument.Name == "DRActionNeededAddEmail")
                    {
                        dRemail[1] = emailDocument.ReadInnerXml();
                    }
                    if (emailDocument.Name == "DRPendingAddEmail")
                    {
                        dRemail[2] = emailDocument.ReadInnerXml();
                    }
                    else
                    {
                        MessageBox.Show(@"The file: 'DREmailAddresses.xml' was not found at: \\fs01\Applications\EMS-Manager");
                    }
                    break;
            }
        }
    }

    return dRemail;
}

public void SendEmail(string subjectText, string bodyText)
{

    string[] email = (string[])AddEmail();
    //object oOutlook = default(Microsoft.Office.Interop.Outlook.Application);
    var oMessage = default(MailItem);
    Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application"));

    if (subjectText == "New Discrepancy Created. DR" + tbxDRNumber.Text + "  ")
    {
        oMessage.To = email[0];
        oMessage.Subject = subjectText;
        oMessage.HTMLBody = bodyText;

        try
        {
            oMessage.Send();
        }
        catch (System.Exception e)
        {
            MessageBox.Show(@"Send Failed with error: " + e);
            throw;
        }
    }
    else if (subjectText == tbxDRNumber.Text + " - Action Needed")
    {
        oMessage.To = email[1];
        oMessage.Subject = subjectText;
        oMessage.HTMLBody = bodyText;

        try
        {
            oMessage.Send();
        }
        catch (System.Exception e)
        {
            MessageBox.Show(@"Send Failed with error: " + e);
            throw;
        }
    }
    else if (subjectText == tbxDRNumber.Text + "DR Pending Approval")
    {
        oMessage.To = email[2];
        oMessage.Subject = subjectText;
        oMessage.HTMLBody = bodyText;

        try
        {
            oMessage.Send();
        }
        catch (System.Exception e)
        {
            MessageBox.Show(@"Send Failed with error: " + e);
            throw;
        }
    }
}

平面文件配置文件不一定有任何问题。这实际上取决于您的用例。文件中的电子邮件多久更改一次?有多少个条目?应用程序的用户是否编辑列表?有没有复杂的规则,不同的地址会收到不同的电子邮件

如果这只是一个不经常更改的简单邮件列表,那么可以使用xml文件。您也可以只创建一个电子邮件通讯组列表发送到,比如applicationDisprepancyReport。这样,您就可以在active directory中管理收件人。如果您坚持使用XML电子邮件地址,至少我会尝试删除文件共享中XML文件的硬编码路径


如果电子邮件地址变化很大,并且被应用程序的用户更改,我建议将其移动到SQL数据库。如果收件人列表经常更改,您可能希望在编辑这些地址时添加跟踪。

是否有效?别管它了,继续其他更高优先级的选项。请花点时间格式化您的代码-谢谢:)我确实格式化了代码。我的印象是,所有的标签都必须在4个空格中。它可以工作,但是我无法访问该文件。它说它不存在,但它确实存在。任何由多个人同时使用的数据都应该存储在数据库中,因为Windows上的文件共享可能会导致问题。数据库库设计用于处理多个用户同时尝试使用相同数据时的冲突。感谢所有回复。电子邮件地址没有太大变化,但我正在考虑未来。有些人会在名单上的某个时候退休,或者出于任何原因辞职。我的想法是能够给经理们一个简单的方法来更新列表。在不同的情况下,通讯组列表会根据用户在表单中输入的内容进行更改。