C# - 邮件确认展望

时间:2015-07-01 08:28:02

标签: c# email outlook

我正在开发一个应用程序,用于检查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"]);

你能帮帮我吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

Outlook对象模型不提供任何属性或方法。您只需将UnRead属性设置为false并将Save设置为项目。

然后,您可以使用SyncObject类的Start方法,使用指定的Send \ Receive组开始同步用户的文件夹。 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

我想你可以随时随地移动物品。