【发布时间】:2017-02-15 21:23:17
【问题描述】:
我目前正在为我工作的公司处理申请。此应用程序的一部分处理差异报告并在创建新的差异编号时发送电子邮件。首先,重要的是要意识到我正在将此应用程序从 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;
}
}
}
【问题讨论】:
-
有效吗?保留它并继续其他更高优先级的选项。请花时间格式化您的代码 - 谢谢:)
-
我确实格式化了代码。我的印象是必须在 4 个空格中添加标签。它可以工作,但是我无法访问该文件。它说它不存在,但它确实存在。
-
多人同时使用的任何数据都应存储在数据库中,因为 Windows 上的文件共享可能会导致问题。数据库库旨在处理多个用户同时尝试使用相同数据时的冲突。