mailtoのリンク(?) を使用して、普段のメールソフトから送信できるようにメールを作る。 送信そのものはしない。
アプリからメール送信をしてもいいのですが (って、VC#で作ったことないくせに)、アプリそのものからは送らない。というのも、アプリで設定するのは、基本的に宛先だけ。 内容は後で、自分で (既定のメールソフト上で) 作成するからいい。
普段のメールの方が、作業しやすいし、送信済みアイテムも残せるし、何より自分のお手製アプリでメール送信なんて、怖くてできない! 当然、バグる可能性高いし、どんな状態で送られているのか不安で、不安で・・・。
"宛先ぐらい、普通に自分で入力しれよ!" と言うだろうが、宛先が多いし、結構変わるもんで、別途管理しているデータがあるわけ。 それを使って送り先を抽出して、設定したメールの雛形? を作るわけだ。
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
OutlookExpress → sjis, ThunderBird → uft8 で作成しないと文字化けする。 他は使ってないので、分りません!
【保留】プログラム側で デフォルトのメールクライアントを判定したいが方法が分らず。。。 とりあえず、エンコードを指定してから、mailtoを実行させる。(アプリ側で指定されたエンコード見て、処理する。)
【保留】添付ファイル。 何やら、メーラーによっては使えそうらしいが、保留。 後で勉強兼ねて実装したいとは思う。
・参考HP:
[DOBON.NET] 指定したURLをブラウザで開く、電子メールソフトを開く
http://dobon.net/vb/dotnet/process/openbrowser.html
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// ↓適当。 とりあえず、エンコードの種類を決める。
string EncName;
switch ( 既定のメールクライアントは? ) {
Case "OutlookExpress":
EncName = "shift_jis"; // ← OE用に
break;
Case "ThnderBird":
EncName = "utf-8"; // ← 雷鳥用に
break;
後、省略。
}
// ↓mailto用のデータを作成
// TO
string ToAddress = "Aさん
ToAddress += ", bbb@XXX.XX"; // ←複数宛は順次追加
// Urlエンコードされちゃ、マズイのをゴリゴリ回避
ToAddress = MailEncode(ToAddress, EncName);
// CC, BCC, 件名 Subject, 本文 Bodyも同様に各内容を作成
// メールデータまとめる
string MailData = string.Format("mailto:?to={0}&subject={1}&body={2}&cc={3}&bcc={4}",
ToAddress, Subject, BodyMsg, CcAddress, BccAddress);
// mailtoで、既定のメールクライアントを起動
System.Diagnostics.Process.Start(MailData);
// ここまで本体
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
「Urlエンコードされちゃ、マズイのをゴリゴリ回避」の続き↓
http://oojima33.blogspot.com/2008/12/vcmailto2.html
0 件のコメント:
コメントを投稿