下载电子邮件附件时使用 C# 中的 Microsoft Security Essentials

Posted

技术标签:

【中文标题】下载电子邮件附件时使用 C# 中的 Microsoft Security Essentials【英文标题】:Use Microsoft Security Essentials in C# when downloading email attachment 【发布时间】:2012-11-09 13:38:55 【问题描述】:

我正在制作一个简单的程序来使用 VS2010 从 pop3 服务器获取电子邮件。 可能会使用开源 OpenPOP 来完成其中的一些。 然后它应该将电子邮件和附件保存在 MS SQL 数据库中。

但问题是,虽然附件很容易从邮件服务器下载,但有没有办法扫描附件? 我工作的这家小公司只使用 Microsoft 安全必需品。

用谷歌搜索过,但似乎找不到任何关于这件事的信息。

【问题讨论】:

检查是否可以让您的防病毒应用程序通过命令行参数扫描文件。使用类似Process.Start(..) 的命令行选项 【参考方案1】:

你可以使用:

"%ProgramFiles%\Microsoft Security Client\MpCmdRun.exe" -Scan -ScanType 3 -File "<Path>"

并检查返回码。

附加信息:

-Scan [-ScanType value]
     0  Default, according to your configuration
     1  Quick scan
     2  Full system scan
     3  File and directory custom scan

        [-File <path>]
             Indicates the file or directory  to be scanned, only valid for
             custom scan.

        [-DisableRemediation]
             This option is valid only for custom scan.
             When specified:
               - File exclusions are ignored.
               - Archive files are scanned.
               - Actions are not applied after detection.
               - Event log entries are not written after detection.
               - Detections from the custom scan are not displayed in the user
                 interface.

   Return code is
   0    if no malware is found or malware is successfully remediated and no
        additional user action is required
   2    if malware is found and not remediated or additional user action is
        required to complete remediation or there is error in scanning.
        Please check History for more information.

【讨论】:

嗨@Paolo 我没有收到整数格式的结果。接收结果“扫描 xyz.pdf 没有威胁”。请帮我弄清楚我的代码有什么问题。 C# 代码: var args = "-Scan -ScanType 3 -File " Process.start(@"c:\Program Files\Microsoft Security Client\MpCmdRun.exe", args ) 它正在打开命令提示符并显示结果如下:扫描开始..扫描完成..扫描xyz.pdf没有威胁。 @Dreamer 你如何检查返回码?你试过process.ExitCode吗? ***.com/a/1585375/63011如果此解决方案适合您,请随时使用实际代码 sn-p 更新答案 谢谢@Paolo,它正在工作。我得到了 ExitCode 值。是否有可能获得除 0 或 2 之外的退出代码?是否有任何参考文档可以获取退出代码值和详细信息?

以上是关于下载电子邮件附件时使用 C# 中的 Microsoft Security Essentials的主要内容,如果未能解决你的问题,请参考以下文章

剪纸中的附件

优化C#小程序集成实现python定时段批量下载电子邮箱附件的bug排除

GMAIL API 在 C# 中发送带附件的电子邮件

从 Outlook 获取附件

从 mfmailcomposer 发送附件时无法查看邮件附件中的数据

发送包含存储在数据库中的多个附件的电子邮件(ASP.NET C#)