- ベストアンサー
mailto:の書式について
- 「mailto:」で宛先を「Name <Address>」の形式で表示させることは可能でしょうか?
- mailto:"Name" <Address>の形式でShellExecute関数でメールの起動を試みましたが、エラーとなりました。
- アドレスの書式で名前を指定する正しい書き方をご存知の方、コメントを頂けると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Officeを使用されているということですので、カテゴリとしては、 VBAが最適なように見えますが、ソースの中身はAタグの 内容そのままのようですので、HTMLで質問されたのでしょう。 送信先にメールアドレス以外の任意の文字列を表示させたいときは、 次のようになります。 mailto:?to=hoge>foo@baa.com< こうすると、メールのTo欄には「hoge」と表示されます。 >と<はHTMLタグとして使用されている<と>に 対応します。 ですので、例示されているVBAに当てはめると次のようになります。 'メーラを起動する。 lngRet = ShellExecute(HWnd, _ "open", _ "mailto:?to=" & _ strAddressName& _ ">" & strAddress & "<" & _ "&subject=" & strTitle & _ "&cc=" & strCcAddress & _ "&bcc=" & strBccAddress & _ "&body=" & strMailBody, _ vbNullString, _ CurDir$, _ SW_SHOWNORMAL) ここで、表示させる名前をstrAddressNameに設定することを想定しています。 strAddressName=""であれば、メールアドレスが表示されます。 ただし、この動作はOutlookExpressでしか確認していません。 他のメーラで同じ動作をするかはわかりません。 これでよろしいでしょうか。
その他の回答 (1)
- Spur
- ベストアンサー率25% (453/1783)
タグと判断されるからでしょう。 ソースを書いてみてください。 <a href="mailto:mailto:"Name" <Address>">メールを出す</a> と書いているのですか? それは無理ですよ。 ↓これは何でしょう? HTMLにそのような書き方は無いと思いますけど? >問題の箇所のソース(抜粋)は下記の通りです。 >'メーラを起動する。 >lngRet = ShellExecute(HWnd, _ >"open", _ >"mailto:" & _ >strAddress & _ ---- 以下省略 ------
お礼
コメントありがとうございます。 「mailto:」を使用したのは、COM(オートメーション)より手軽そうに思えたからなのですが、 特殊文字のエンコード処理が煩雑なことと、ファイルを添付する方法がわからない、という 問題があり、結局COMベースの方法(CreateObject("OutLook.Application")........)を採る ことに決めました。 お手数をお掛けしました。
お礼
> ただし、この動作はOutlookExpressでしか確認していません。 > 他のメーラで同じ動作をするかはわかりません。 OutlookExpressで下記の書式を動作確認してみました。 mailto:?to=hoge>foo@baa.com< (1) 「hoge」がアドレス帳に存在しない場合、宛先欄には「hoge」と表示されるが、 「foo@baa.com」は無視される。 (2) 「hoge」がアドレス帳に登録済みのアドレスと完全一致、または、パターンマッチ (たぶん前方一致だと思いますが、正確な条件は不明)する場合は、該当アドレス が参照される。(この場合も、「foo@baa.com」は無視される) という訳で、残念ながらOutlookExpressでは、この書式は期待した動作をしないようです。 以上、結果報告です。(ご参考まで・・・)
補足
コメントありがとうございます。 結論を申しますと、COMベースの方法(単発メールなら、OutLook.Application で。複数メールの一括 送信ならCDOで)を採ることにしました。 「mailto:」の使用を見送ったのはNo.1さんへの補足に書いた理由もありますが、一括処理に向かない ( = 単発のメールしか送信できない)と判断したのが大きな要因です。 何といっても、コンポーネントを使えば、URLエンコードを自前で処理する必要がないので楽です。(笑 手抜きかもしれませんが・・・。(^-^; という訳で、書いて頂いた方法については残念ながら動作確認しておりません。m(_ _)m (後日結果報告致します) ありがとうございました。