none
CDOEX でメール送信時、送信済みアイテムに残すには RRS feed

  • 質問

  • こんにちは。
    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)でメール送信を行うと、送信者の「送信済みアイテム」と受信者の「受信トレイ」にメールを格納してくれます。

    2009年6月15日 8:58

回答

すべての返信

  • 自己追記なのですが、
    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
    2009年6月15日 9:08
  • 英語のフォーラムの方にマルポしてまして(多分無茶苦茶な英語ですが。。。)、
    ヒントを頼りに解決しましたので、リンクをはりました。基本的なことだったようで。。。

    http://social.technet.microsoft.com/Forums/en-US/exchangesvrdevelopment/thread/1f5ae329-efb0-470d-99c9-39decf83b72c

    ありがとうございました。
    • 回答としてマーク Trimmer 2 2009年6月18日 1:06
    2009年6月18日 1:05