如何将电子邮件存储到我的SQL Server数据库中?

时间:2015-11-10 09:51:55

标签: c# sql-server entity-framework insert add

我正在尝试将电子邮件存储到我的SQL服务器数据库中。我从Exchange Webservices获得的这些电子邮件。

我正在使用实体框架并制作了ADO .Net数据模型。

我的问题是如何制作将这些电子邮件存储到我的数据库中的方法(StoreEmail)。

这是我到目前为止的StoreEmail方法:

它应该存储我的网络钓鱼邮件......

          public object StoreMail(Model.PhishingMail PhishingMail)
         {
           using (var phishingMailStorage = new PhishFinderModel())
        {
            PhishingMail = MailMapper.Map(Model.PhishingMail);
            phishingMailStorage.PhishingMails.Add();

            phishingMailStorage.SaveChanges();

            return PhishingMail;
        }

    }

在Mailmapper类中,我设置了我想要存储的属性,即Sender,Subject和Body:

      public static PhishingMail Map(EmailMessage OutlookMail)
    {


        PhishingMail readMail = new PhishingMail();

        readMail.Sender = OutlookMail.Sender.Address;
        readMail.Body = OutlookMail.Body;

         return readMail;

  }

这是我的数据库架构enter image description here

为了澄清我的问题,我已经从交换服务器获取电子邮件列表。现在,我需要做的就是将它们插入SQL服务器。

如何让StoreEmail方法正常工作?

请不要苛刻我真的很陌生。感觉就像我在信息的海洋中游泳,我不知道在哪里看或开始。因此,非常欢迎任何建议的教程。

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在存储PhishingMail,而您正在收到PhishingMail,因此您不需要映射步骤。

这不起作用吗?

public void StoreMail(Model.PhishingMail PhishingMail)
{
    using (var phishingMailStorage = new PhishFinderModel())
    {
        phishingMailStorage.PhishingMails.Add(PhishingMail);

        phishingMailStorage.SaveChanges();
    }
}

您也不需要返回邮件,因为调用者已经拥有它(如果您没有返回新的/不同的对象,那么返回void会更加整洁。

如果实际需要存储EmailMessage,您的方法应为:

public void StoreMail(EmailMessage emailMessage)
{
    var phishingMail = MailMapper.Map(emailMessage);
    using (var phishingMailStorage = new PhishFinderModel())
    {
        phishingMailStorage.PhishingMails.Add(phishingMail);

        phishingMailStorage.SaveChanges();
    }
}