C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

メール起動(Windows Live & T-Bird)


(過去ログ 97 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■58089 / inTopicNo.1)  メール起動(Windows Live & T-Bird)
  
□投稿者/ 嵩倖 (1回)-(2011/03/25(Fri) 10:47:05)

分類:[.NET 全般] 

困っています。
現在、VB6 Windows XP Outlook or Outlook Express で
画像(jpeg)を右クリック「送る」でメーラーを起動して
選択した画像が添付されていて、From To Subject 等は
起動された新規メールで利用者が任意に入力できるものです。

これをVB.Net Windows 7 対応版に移植することとなりました。
ただし、Outlook 限定ではなく、規定のメーラーに設定してある
メーラーに画像添付して起動するというもの。

Windowsフォームアプリでプロジェクトを起こし、フォーム上に
AxMAPISession と AxMAPIMessages を設置して、Sub Main() 起動
にしています。

[困っていること]
1.Windows Live Mail の場合

        With mapSess
            .DownLoadMail = False
            .LogonUI = True    ' 基本のメール システムを使用して UI にログ オンします。
            .SignOn()       ' Signon メソッド
            LogOn = True
            .NewSession = True
            bNewSession = .NewSession
            mapSess.SessionID = .SessionID ' 続行する前に ID を設定します。
        End With

        mapMess.SessionID = mapSess.SessionID

        With mapMess
            .Compose()                          'メッセージを作成
            .RecipDisplayName = "[from] "                'あて先
            .RecipAddress = "[sendto] "                  'メールアドレス
            .MsgSubject = " "
            .MsgNoteText = " "

            '添付ファイル(複数)
            For i As Int32 = 0 To filecnt
                .AttachmentIndex = i
                .AttachmentPathName = jpgFile(i)
                .AttachmentName = filename(i)
                .MsgNoteText = " "
            Next

            .Send(True)
        End With

    これでは画像が、SkyDrive 上に乗ってしまいます。
  SkyDrive に載らない方法はあるでしょうか?

2.ThunderBird の場合
  mapSess.SessionID = .SessionID が "0" のため、 
    .Compose() でセッションIDがないためエラーになってしまいます。
  ThunderBird におけるセッションIDは、AxMAPISessionでは獲得できないので
  しょうか?(Outlook or Outlook Express だけ?)
  どのようにしたらSessionIDが取得できるのでしょうか?

3.そこでSMTPで実施してみました
  ("xxxxx" は、実際のアドレス、名称等指定)

        Dim targetEncode As System.Text.Encoding = System.Text.Encoding.GetEncoding("iso-2022-jp")
        Dim Mfrom As MailAddress = New MailAddress("xxxx@xxx.xxx", "xxxxx", Encoding.GetEncoding("iso-2022-jp"))
        Dim mailTo As MailAddress = New MailAddress("xxxx@xxx.xxx", "xxxxx", Encoding.GetEncoding("iso-2022-jp"))

        ' 添付ファイルを作成
        Dim attachment As Attachment = New Attachment(jpgFile(0))
        ' Content-Type を指定
        Dim contentType As ContentType = New ContentType("image/jpeg")
        contentType.Name = filename(0)
        attachment.ContentType = contentType

        ' MailMessage を作成
        Dim message As MailMessage = New MailMessage()
        message.From = Mfrom
        message.To.Add(mailTo)
        message.Subject = String.Format("=?{0}?B?{1}?=", "iso-2022-jp", Convert.ToBase64String(targetEncode.GetBytes("タイトルです")))
        message.Body = "添付ファイルつきのメール"
        message.Attachments.Add(attachment)

        Dim smtpClient As SmtpClient = New SmtpClient("xxxxx.xxxxx.xxxxx")
        smtpClient.Send(message)

  これで送信は、できるのですがプログラム上で From To SMTP の指定が必須で
  smtpClient.Send(message)で、送信されてしまいます。
  指定しないとsmtpClient.Send(message)で、「指定がない」とエラーになります。
  先に説明したようにメーラーの新規作成画面を表示して、任意にFrom To Subject を
  指定できるようにしたいのですが、どのようにしたらよいでしょうか?
  要するにProcess.Start("SendTo:........$Subject=" & wtitle )と同様にしたい。
  ただし、Process.Startでは、Attachment が有効でないため、自作しなければなりません。

以上、長くなりましたが、わかる方お力をお貸しください。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -