2007年2月13日火曜日

[VB.NET] メールの送信フォームを起動する

MAPIって言うものを使うと、MAPIに関連づいたメールクライアント(Outlook ,Outlook Expressなど)の送信フォームを起動できます。

まず、画面にMAPISessionとMAPIMessagesを貼り付けて。。。

----------------
Me.AxMAPIMessages1.SessionID = Me.AxMAPISession1.SessionID

With Me.AxMAPIMessages1
  'メッセージを作成
  .Compose()
  'あて先
  .RecipDisplayName = "[DisplayName]"
  'メールアドレス
  .RecipAddress = "[mailaddress]"
  'Subject
  .MsgSubject = "サブジェクト"
  '本文
  .MsgNoteText = "本文"

  '添付ファイル(複数)
  For i As Int32 = 0 To filelist.Count - 1
    .AttachmentIndex = i
    .AttachmentPathName = DirectCast(filelist.Item(i), FileInfo).FullName
    .AttachmentName = "Flie" & (i + 1).ToString
    'コレが重要。スペースが必要。
    .MsgNoteText = " "
    'NOTE .MsgNoteText = " " -> KB173853 in microsoft
  Next

  Try
    .Send(True)
  Catch ex As System.Runtime.InteropServices.COMException
    Debug.WriteLine("メール送信時のキャンセルでComExceptionが発生っぽい")
    Debug.WriteLine(ex)
  End Try
End With

Me.AxMAPISession1.SignOff()

1 件のコメント:

shinomiya さんのコメント...

こんにちは、参考にさせてもらいました。

このままでは .Compose でセッションが作られていないの、例外が出ますので、

最初に

With Me.AxMAPISession1
 .DownLoadMail = False
.SignOn()
End With

を足された方は良いかと・・・