- PR -

デフォルトメールソフトで添付ファイルの送信

投稿者投稿内容
kureru
常連さん
会議室デビュー日: 2005/07/26
投稿数: 22
投稿日時: 2006-12-07 17:09
お世話になります。

VB2005で、デフォルトのメールソフトを起動して、添付ファイルの送信を行おうとして、いろいろと検索してみたのですが、
Process.Start("mailto:xxxxxx")
でメーラ自体は起動することはできたのですが、起動時に添付ファイルを指定する方法がみつかりませんでした。
System.Web.Mail.MailMessageを使用すると、添付ファイルを送信することはできるのですが、
メーラに設定されているアドレス帳から、宛先を指定することができません。

どなたか良い方法をご存知の方がいれば、お教えいただけないでしょうか?
よろしくお願いします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-12-08 06:39
引用:

kureruさんの書き込み (2006-12-07 17:09) より:
どなたか良い方法をご存知の方がいれば、お教えいただけないでしょうか?
よろしくお願いします。


これと言ったよい方法は無いです。いくつかの方法がありますが、いずれにも欠点があります。
mailto:を使った方法はあて先と件名までなら、ほぼどのメールクライアントでも対応します。ですが本文は対応していないクライアントも多いです。適切にエンコードして本文としてBodyに渡せば添付ファイルを送れないことも無いと思います。
もう一つはMAPIを使う方法です。ですがMAPIに対応しているクライアントは、実質OutlookとOutlook Expressだけです。これ以外のメールクライアントを使っていた場合には対応できません。
kureru
常連さん
会議室デビュー日: 2005/07/26
投稿数: 22
投稿日時: 2006-12-08 09:46
甕星さんありがとうございます。
OutlookとOutlook Expressに対応できれば良いため、MAPIのほうを調べてみます。
kureru
常連さん
会議室デビュー日: 2005/07/26
投稿数: 22
投稿日時: 2006-12-08 14:20
すいません、やっぱりOutlook限定じゃだめらしいため、
本文としてBodyに渡す方法を調べてみたのですが、
方法が載っているサイトを見つけることができませんでした。
どこか載っているようなサイトや、検索するための語句等を教えていただけないでしょうか。
よろしくお願いします。
ita
常連さん
会議室デビュー日: 2006/10/10
投稿数: 25
お住まい・勤務地: 兵庫県
投稿日時: 2006-12-19 18:49
引用:

kureruさんの書き込み (2006-12-08 14:20) より:
すいません、やっぱりOutlook限定じゃだめらしいため、
本文としてBodyに渡す方法を調べてみたのですが、
方法が載っているサイトを見つけることができませんでした。
どこか載っているようなサイトや、検索するための語句等を教えていただけないでしょうか。
よろしくお願いします。


kureruさん
初めまして、いたと申します。すみません、回答ではないです。
私もVB2005からデフォルトメーラーでの添付ファイルの送信を行いたいと思っていろいろ調べましたが、これといった答えが見つかりません。その後、何か解決策などは見つかりましたでしょうか?

他のメンバーさん
このProcess.Start("mailto:aaa@aaa.co.jp&subject=件名&body=TEST") の方式でbodyに添付ファイルをエンコードして付ける方法としての参考記事などがありましたらよろしくお願いします。私も節に願います。
ita
常連さん
会議室デビュー日: 2006/10/10
投稿数: 25
お住まい・勤務地: 兵庫県
投稿日時: 2006-12-20 10:19
引用:

mailto:を使った方法はあて先と件名までなら、ほぼどのメールクライアントでも対応します。ですが本文は対応していないクライアントも多いです。適切にエンコードして本文としてBodyに渡せば添付ファイルを送れないことも無いと思います。



甕星さん、はじめましてitaと申します。便乗質問させてください。

Bodyに適切にエンコードしたものを渡せば添付ファイルを送れるとのことですが、この「適切にエンコード」の部分がわかりません。
開発環境は、VB2005でWindowsアプリケーションからTO,CC,Subject,Body,添付ファイルを指定して、ユーザーのOutlookから新規のメールを表示させユーザーが宛先などを追加し、メールを送信させたいと思っています(Kureruさんと同様だと思います)

この投稿を見てエンコードをいろいろ調べましたが、下記のBASP21のBase64というメソッドで添付ファイルをエンコードするところまでは判りましたが、これをどうやってBodyに渡せば良いかがわかりません。

下記のソースでやりたいのは、本文は「TEST」で添付ファイルとして「test.doc」を付けたいと思っています。

Dim bobj As New BASP21Lib.Basp21
bobj.Base64("D:test.doc" & vbTab & "D:testdoc.txt", 6)

Dim sr As New System.IO.StreamReader("D:testdoc.txt", System.Text.Encoding.GetEncoding(932))
Dim s As String = sr.ReadToEnd()
sr.Close()
Dim body$ = "TEST" & s
Process.Start("mailto:aaa@aaa.co.jp&cc=ccc@ccc.co.jp&subject=件名&body=" & body$)
bobj = Nothing

どうかよろしくお願いします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-12-20 11:10
引用:

itaさんの書き込み (2006-12-20 10:19) より:
甕星さん、はじめましてitaと申します。便乗質問させてください。
Bodyに適切にエンコードしたものを渡せば添付ファイルを送れるとのことですが、この「適切にエンコード」の部分がわかりません。


や、私も完璧に理解しているわけではないです。要はMIMEが普及する以前の添付ファイル方式はBASE64エンコードしたデータを埋め込んでいたので、同様の方法を取れば出来るはず・・・程度の認識です。
ita
常連さん
会議室デビュー日: 2006/10/10
投稿数: 25
お住まい・勤務地: 兵庫県
投稿日時: 2006-12-20 11:28
引用:

甕星さんの書き込み (2006-12-20 11:10) より:
や、私も完璧に理解しているわけではないです。要はMIMEが普及する以前の添付ファイル方式はBASE64エンコードしたデータを埋め込んでいたので、同様の方法を取れば出来るはず・・・程度の認識です。



そうでしたか!ひじょ〜に残念です。
どなたか、この辺りに詳しい方いらっしゃいませんか?このようなニーズはあると思うのですが?
(単純にメールを送信するのなら、アプリから直接送信すれば良いですが、ユーザーが今まで蓄積したアドレス帳から宛先を選択できることと、ユーザーのメーラーに送信簿として記録が残るというメリットがあるのでこの方式にこだわりたいと思っています。)

回答ありがとうございました。

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