这是我正在使用的代码。我花了一些时间查看Redemption对象,但是,没有任何东西突然出现在我身上:
public static bool PopEmail(string domainUserName, string mSubject, string mBody, string mTo, string mCc = "", string mBcc = "", List<String> fileAttachments = null)
{
log.Info("Starting to Pop Outlook Email Message");
RDOSession oSession = new RDOSession();
try
{
oSession.LogonExchangeMailbox(domainUserName, string.Empty);
if (oSession.LoggedOn)
{
RDOMail oMail = oSession.GetDefaultFolder(rdoDefaultFolders.olFolderOutbox).Items.Add("IPM.Note");
oMail.Subject = mSubject;
oMail.Body = mBody;
oMail.To = mTo;
oMail.CC = mCc;
oMail.BCC = mBcc;
if (fileAttachments != null)
{
foreach (string file in fileAttachments)
{
object newFile = file;
oMail.Attachments.Add(newFile, Type.Missing, Type.Missing, Type.Missing);
newFile = null;
}
}
oMail.Display();
Marshal.FinalReleaseComObject(oMail);
oMail = null;
}
oSession.Logoff();
Marshal.FinalReleaseComObject(oSession);
oSession = null;
GC.Collect();
GC.WaitForPendingFinalizers();
log.Info("Outlook Email has been Popped.");
return true;
}
catch (Exception)
{
log.Error("Outlook Pop Email Failed.");
throw;
}
}
谢谢,
答案 0 :(得分:0)
签名实际上是由Outlook检查器对象在实例化时插入的,因此如果您的代码在Outlook插件中运行,您可以尝试保存该项目,然后通过{{_MailItem
从{OOM>重新打开它。 1}}然后调用它的_Namespace.GetItemFromId
方法(实际上你不需要对返回的检查器引用做任何事情)。
请注意,我没有尝试使用最初通过RDO创建的项目。我通常在OOM中创建项目,然后创建一个RDO包装器。
如果您的代码在Outlook外部运行,则必须使用OLE来获取对其GetInspector
对象的引用,然后从那里拉出_Application
对象。如果您使用的是未安装Outlook的独立MAPI,则签名功能完全不可用。
答案 1 :(得分:0)
我添加了代码以附加到oMail.HTMLBody,该代码从C:\ Users \ UserName \ AppData \ Roaming \ Microsoft \ Signatures文件夹中读取签名。此文件是通过我们的开发人员编写的插件生成的,该插件从Exchange读取信息以确定用户名,标题,电话,传真等。