【问题标题】:How do I store emails into my SQL server database?如何将电子邮件存储到我的 SQL Server 数据库中?
【发布时间】:2015-11-10 09:51:54
【问题描述】:

我正在尝试将电子邮件存储到我的 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;

  }

这是我的数据库架构

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

如何使我的 StoreEmail 方法起作用?

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

谢谢!

【问题讨论】:

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


    【解决方案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();
        }
    }
    

    【讨论】:

    • @user3599415 好的,在这种情况下,您需要更改您的Map 方法以创建并返回DataAccess.PhishingMail 而不是PhishingMail(它会自动解析为Model.PhishingMail)。本质上,在您的 Map 方法中,将 PhishingMail 替换为 DataAccess.PhishingMail
    • @user3599415 别担心 :)
    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多