2008年12月29日月曜日

VC# mailtoでメール作成

VC# mailto でメールを作成する。

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 件のコメント: