【问题标题】:C# - Mail confirmation OutlookC# - 邮件确认 Outlook
【发布时间】:2022-04-03 14:45:44
【问题描述】:

我正在开发一个应用程序来检查 Outlook 邮件帐户,找到所有附件,然后将它们打印出来。此时,分析的邮件被移动到另一个文件夹。

我只有一个问题:有时,我会收到一些带有阅读确认的邮件。该应用程序检查附件,当它必须移动邮件时,它会冻结。然后在 Outlook 中出现一个弹出窗口,关于发送或不发送阅读确认。

现在,我想以编程方式进行,我总是想在请求时发送阅读确认。

我找到了一个属性(ReadReceiptRequested),如果有阅读确认要发送,则设置为true,但我不知道如何发送。

这是我使用的一段代码:

//I store all the emails in a List<Outlook.MailItem> named emails
Outlook.Application myApp = new Outlook.Application();
Outlook.NameSpace mapiNameSpace = myApp.GetNamespace("MAPI");
//Check if the mail has read confirmation
if (emails[right_index].ReadReceiptRequested)
{
    //How to send read confirmation?
}
//I read the mail, then I move it to another folder
emails[indice_scelto].UnRead = false;
emails[indice_scelto].Move(mapiNameSpace.Folders["New folder"]);

你能帮我吗?

提前致谢!

【问题讨论】:

  • 你能在阅读邮件的地方显示代码吗?
  • 当然,我需要一点时间给代码添加一些注释。

标签: c# email outlook


【解决方案1】:

您可以在扩展 MAPI 级别(C++ 或 Delphi)上执行此操作 - 调用 IMessage::SetReadFlag() - 传递 0 以发送已读回执或传递 SUPPRESS_RECEIPT 否则。

如果Redemption 是一个选项(我是它的作者),它会公开采用SuppressReceipt 布尔参数的RDOMail.MarkRead 方法。

【讨论】:

  • 我正在检查这个库,它非常有趣。当我有消息时,我会通知你。谢谢你。
  • 我知道如何使用 Redemption,它是一个非常强大的工具!非常感谢!
  • 如果您将 Redemption 与现有 OOM 代码一起使用,请创建 RDOSession 对象的实例,将其 MAPIOBJECT 属性设置为 Namespace.MAPIOBJECT,然后调用 RDOSession.GetRDOObjectFromOutlookObject 或 RDOSession.GetMessageFromID 以将 MailItem 作为 RDOMail 重新打开.
  • 非常感谢您的提示! :)
【解决方案2】:

Outlook 对象模型不提供任何属性或方法。您所能做的就是将UnRead 属性设置为false 并将Save 设置为该项目。

然后您可以使用 SyncObject 类的Start 方法使用指定的发送\接收组开始同步用户的文件夹。 Namespace 类提供了SyncObjects 属性,该属性返回一个包含所有Send\Receive 组的SyncObjects 集合。例如:

 Public Sub Sync() 
  Dim nsp As Outlook.NameSpace 
  Dim sycs As Outlook.SyncObjects 
  Dim syc As Outlook.SyncObject 
  Dim i As Integer 
  Dim strPrompt As Integer 
  Set nsp = Application.GetNamespace("MAPI") 
  Set sycs = nsp.SyncObjects 
  For i = 1 To sycs.Count 
   Set syc = sycs.Item(i) 
   strPrompt = MsgBox( _ 
   "Do you wish to synchronize " & syc.Name &"?", vbYesNo) 
   If strPrompt = vbYes Then 
    syc.Start 
   End If 
  Next 
 End Sub

我想你可以将物品移动到任何你需要的地方。

【讨论】:

  • 感谢您的回答,但我不必保存邮件。唯一的问题是发送读取确认。顺便说一句,我想我找到了一个解决方案,也许它并不优雅,但我认为它会起作用:当我的应用程序冻结时,我将关注我的 Outlook 应用程序,因此用户自己会选择是否发送确认。
  • 你有没有尝试使用我在代码中建议的所有东西?
  • 老实说,我不使用VB,也不明白你的代码是做什么的。
  • Outlook 对象模型适用于所有类型的应用程序。所以,我相信你可以看到代码中使用的属性和方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
相关资源
最近更新 更多