トップ回答者
CDOEX でメール送信時、送信済みアイテムに残すには

質問
-
こんにちは。
VBA で CDOEX を用いてメールを送信する処理を開発しています。
(最終目的は、他システムのグループウェアからの過去メールの移行です)。
メールの受信者で Outlook を開くと、当然ながらメールが受信でき「受信トレイ」に格納されるのですが、逆に
メールの送信者で Outlook を開いた時に、「送信済みアイテム」には入ってきません。
「送信済みアイテム」に残すようなメールの送信方法はあるのでしょうか?(CDOEXを用いて)
CDOEX を用いたメール送信の VBA は、以下のように組んでおり、
Exchange 2003 Server 上(兼PDC)で Domain Admin 権限で動かしています。
Dim t As New CDO.Message
With t
.Configuration.Fields(cdoSMTPServer) = "server01.hoge.local"
.Configuration.Fields.Update
.MimeFormatted = True
.Fields.Update
.From = "test01@hoge.local"
.To = "test02@hoge.local"
.Subject = "メール自動送信(Server)"
.TextBody = "メール自動送信 with CDOEX"
.Send
End With
なお、目的が達成できるなら、CDOEX 以外に使える他のテクノロジでもかまいません。
どうぞよろしくお願いいたします。
■環境(サーバ)
Windows 2003 Enterprise
Exchange 2003 Standard
Excel 2002
■環境(クライアント)
Windows XP SP2
Outlook 2007
---
余談ですが、
Exchange 2007 の EWS(Exchange Web Service)でメール送信を行うと、送信者の「送信済みアイテム」と受信者の「受信トレイ」にメールを格納してくれます。
回答
すべての返信
-
自己追記なのですが、
CDOEX と ExOLEDB を用いて、「送信済みアイテム」に直接メールアイテムを格納することもやってみました。
結果は、一応格納されたのですが、Outlookで見ると、「まだ送信されていないメールです」という表示がでてしまいますので、この表示を取り除ける方法があるのであれば、こういう解決でもかまいません。
ご存じの情報があれば、少しでもかまいませんのでお力をお貸しください。
よろしくお願いいたします。
参考:送信済みアイテムに直接メールアイテムを格納する方法( on Exchange 2003)
Dim t As New CDO.Message
Dim con As New ADODB.Connection
con.Provider = "ExOLEDB.DataSource"
Dim Pers As New CDO.Person
Dim Mbx As CDO.IMailbox
Dim strUrl As String
strUrl = "mailto:test01@hoge.local"
Pers.DataSource.Open strUrl, Nothing, adModeRead, adFailIfNotExists, adOpenSource, "", ""
Set Mbx = Pers.GetInterface("IMailbox")
With t
.From = "test01@hoge.local"
.To = "test02@hoge.local"
.Subject = "送信済みアイテムに直接登録"
.TextBody = "送信済みアイテムに直接登録 with CDOEX / ExOLEDB"
con.Open Mbx.BaseFolder, "", "", -1
.DataSource.SaveToContainer Mbx.SentItems, Nothing, adModeReadWrite, adCreateNonCollection, adOpenSource, "", ""
con.Close
End With