|
分類:[.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 が有効でないため、自作しなければなりません。
以上、長くなりましたが、わかる方お力をお貸しください。
|