0

vstooutlookアドインを使用してメールを送信したいのですが。

複数の受信者とDBMSからの受信者に関するデータがあります。メールテンプレートには、名前、仮題などの個人データに置き換える必要のあるキーワードがあります。また、お互いにメールを送信しているように見える各メールの受信者アドレスは1つだけである必要があります。

一緒にではなく、一人一人にメールを送りたいです。元のメールをキャンセルして、メール本文と件名を変えて一人一人にメールを送ることができます。

「送信済みフォルダ」には、受信者数と同じ量のメールがあることに気づきました。

元のメッセージが送信されていないのに、「送信済みフォルダ」に元のメールを1つだけ表示したい(元のメッセージは送信しないでください)。

すべてのメールを送信した後、「送信済みフォルダ」からすべてのメールを削除し、元のメッセージを「送信済みフォルダ」に移動できると思いますが、「未送信」とマークされた元のメールと送信時刻が設定されていません。このアイテムをプログラムで送信されたメールのようにするにはどうすればよいですか。

または、私の問題を解決する方法はありますか?

Outlook2007とVisualStudio2010VSTOとFramework3.5に取り組んでいます。

4

1 に答える 1

0

まず、送信後にメッセージを削除するには、MailItem.DeleteAfterSubmitプロパティをtrueに設定します。

通常、Outlookによって作成されるすべてのメッセージは未送信の状態で作成され、それを変更する方法はありません。MAPIレベルでは、PR_MESSAGE_FLAGSプロパティでMSGFLAG_UNSENTビットを設定できますが、Outlookではそれを許可しません。ただし、RDOMail.Sentプロパティ(読み取り/書き込み)を使用して、 Redemptionでそのプロパティを(メッセージが初めて保存される前に)設定できます。さらに、RDOMail.CopyTo()メソッドを使用して、別のメッセージまたはフォルダーを渡してメッセージデータをコピーできます。

OOMレベルで行う唯一の方法は、PostItemオブジェクト(送信済み状態で作成される唯一のオブジェクト)を作成し、そのMessageClassプロパティを「IPM.Note」にリセットし、保存して解放し、を使用して再度開くことです。 Namespace.GetItemFromIDを使用して、送信済み状態のMailItemオブジェクトとして再度開きます。

償還では、あなたがする必要があるのは

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
于 2013-02-21T04:52:26.243 に答える