首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >outlook 2007 -如何使用邮件模板和数据表单DBMS发送个性化邮件

outlook 2007 -如何使用邮件模板和数据表单DBMS发送个性化邮件
EN

Stack Overflow用户
提问于 2013-02-21 10:02:21
回答 1查看 263关注 0票数 0

我想用vsto outlook插件发送一封电子邮件。

将有多个收件人和来自DBMS的有关收件人的数据。在邮件模板中将有一个关键字应该被替换为个人数据,如姓名,工作头衔。并且每个邮件上必须只有一个收件人地址,看起来就像我们彼此发送邮件一样。

我想发邮件给每个人而不是所有人。我可以取消原始邮件,并将邮件正文和主题文本更改后逐个发送给每个人。

我注意到“已发送文件夹”中的邮件数量将与收件人数量相同。

我希望在“已发送文件夹”中只看到一封原始邮件,即使原始邮件并未发送(原始邮件不应发送)。

我想我可以在发送所有邮件后删除“已发送文件夹”中的所有邮件,并将原始邮件移到“已发送文件夹”中,但未设置标记为"UnSent“的原始邮件和提交时间。如何以编程方式使此项目看起来像已发送的邮件。

或者有没有办法解决我的问题?

我正在使用Outlook2007和Visual Studio 2010 VSTO with Framework3.5。

EN

回答 1

Stack Overflow用户

发布于 2013-02-21 12:52:26

首先,要在消息发送后将其删除,请将MailItem.DeleteAfterSubmit属性设置为true。

通常,Outlook创建的所有邮件都是在未发送状态下创建的,无法更改这一状态。在MAPI级别,您可以在PR_MESSAGE_FLAGS属性中设置MSGFLAG_UNSENT位,但Outlook不允许您这样做。但是,您可以使用RDOMail.Sent属性(读/写)在Redemption中设置该属性(同样,在第一次保存消息之前)。此外,您还可以使用RDOMail.CopyTo()方法传递另一个消息或文件夹来复制消息数据。

在OOM级别上,唯一的方法是创建一个PostItem对象(它是唯一一个在已发送状态下创建的对象),将其MessageClass属性重置为"IPM.Note",保存它,释放它,然后使用Namespace.GetItemFromID重新打开它,将其作为一个处于已发送状态的MailItem对象重新打开。

在赎回中,您需要做的就是

代码语言:javascript
复制
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
YourOutlookMailItem.Save
set SourceMsg = Session.GetRDOObjectFromOutlookObject(YourOutlookMailItem)
set TargetMsg = Session.GetDefaultFolder(olFolderSentMail).Items.Add("IPM.Note")
TargetMsg.Sent = true
SourceMsg.CopyTo(TargetMsg)
TargetMsg.Save
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14993382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档