- PR -

CDOSYSを使用したメール送信

1
投稿者投稿内容
homes
常連さん
会議室デビュー日: 2002/08/06
投稿数: 38
投稿日時: 2006-04-25 16:47
現在ストアドプロシージャを使ったメール送信をテストしているの
ですが、上手くいきません。
送信自体は問題なくできるのですが、メールの重要度が変更できません。
CDOSYSではメールの重要度の変更は可能でしょうか。
CDONTSで設定できる Importance に代わるものがあればと思いいろいろ探して
いたのですが、重要度に関しての記事が見当たりませんでした。
CDOSYSで実現されている方ご教授頂ければ助かります。
構成は、
Windows2000Server
SQLServer2000 Standard
よろしくお願い致します。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-04-25 17:21
一応、httpmail の schema にはこんな感じで定義されているんですけど、

CdoHTTPMail Module

以前、Exchange Server から送られてくる mail header の解析を
CDOSYS をつかってやったことがあるんですけど、そのときでは、
mailheader の方の schema で取得できている data がありました。

urn:schemas:mailheader:importance   normal

どういう状態だったかは忘れましたがね・・・
homes
常連さん
会議室デビュー日: 2002/08/06
投稿数: 38
投稿日時: 2006-04-25 18:15
返信ありがとうございます。
早速 CDOHTTPMailModule を調べてみました。
それで、下記のようにストアドプロシージャを設定して
実行してみましたが、結果は重要扱いになりませんでした。

EXEC @hr = sp_OASetProperty @iMsg, 'httpMail.fields("urn:schemas:httpmail:importance").Value',2

もう少し調べてみます。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-04-26 02:29
引用:
コード:

EXEC @hr = sp_OASetProperty @iMsg, 'httpMail.fields("urn:schemas:httpmail:importance").Value',2




この Fileds Update していますか?
IBodyPart.Fields Property は ADODB.Fields を返すので、更新したら Update Method を発行する必要がありますが・・・

それから、私が Exchange Server で中継されている Mail を CDO 使って調べたときには、前にも書きましたが、httpmail ではなく、mailheader の名前空間の方に設定されていました。

ちなみにちょっと検証しましたが、VB6.0 ならこれでいけますね。

コード:

Dim objCdoMessage As CDO.Message
Dim colCdoDataFields As ADODB.Fields

Set objCdoMessage = New CDO.Message
Set colCdoDataFields = objCdoMessage.Fields

With colCdoDataFields
.Item("urn:schemas:mailheader:importance").Value = "high"
.Update
End With

With objCdoMessage
.From = strFrom
.To = strTo
.Subject = strSubject
.TextBody = strbody
.Send
End With



引用:
sp_OASetProperty


なじみがないなぁ・・・と思ったら、2005 からできたやつか・・・
[訂正] 2000 でもありましたね。

[ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-04-26 02:47 ]
homes
常連さん
会議室デビュー日: 2002/08/06
投稿数: 38
投稿日時: 2006-04-26 10:21
またまた返信ありがとうございます。
実は貼って頂いたリンクから調べてみたのですが、
CdoMailHeader Module の一覧の中に Importance が無かったんです。
それで一体どこにあるんだろうと探しているうちに、
CdoHTTPMail Module に発見したのでこれを使ってみようと思い、作成
してみました。
その後、一度mailheaderの名前空間の一覧に無かったのですがコード
("urn:schemas:mailheader:importance")作成してみましたが、やはり
動作しませんでした。

それと重要度を設定してからのUpdateはしています。
下記抜粋ですが、その部分です。

EXEC @hr = sp_OASetProperty @iMsg, 'httpmail.fields("urn:schemas:httpmail:importance").Value',2

EXEC @hr = sp_OAMethod @iMsg, 'httpmail.Fields.Update', null


mailheaderを使用しての場合は
EXEC @hr = sp_OASetProperty @iMsg, 'mailheader.fields("urn:schemas:mailheader:importance").Value',2

にしてみました。
結構難しいですね。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-04-26 17:04
引用:

実は貼って頂いたリンクから調べてみたのですが、
CdoMailHeader Module の一覧の中に Importance が無かったんです。



はい、ないです。もともと重要度って RFC で定義されている header ではなく、
mail client software によって独自に拡張してきた経緯があるので、
使用する mail client software によって表示はまちまちです。
# とりあえず、outlook では Importance header で切り替わります。

とはいえ、mail header にはかかれているでしょうから
とりあえず、header を確認してください。

この手の header には、ほかにも
Priority
X-Priority
X-MSMail-Priority
とかいろいろありますんで・・・
1

スキルアップ/キャリアアップ(JOB@IT)