また、デフォルトのメールプログラムの対象と体クロスプラットフォームとなり得る。

StackOverflow https://stackoverflow.com/questions/17373

  •  08-06-2019
  •  | 
  •  

質問

また、デフォルトのメールプログラムの対象と体クロスプラットフォームとなり得る。

残念ながら、このサイトは、クライアントアプリのJavaで記述されたい。

私はこの仕事のクロスプラットフォーム(このはWindowsとMac、申し訳ありませんLinuxで共通)。できたことを喜ばしく思いを実行し、VBScript、WindowsではAppleScript OS X.だから評価を頂きましたこういうスクリプトが含まれる必要があ.思い出いっぱいの実行ユーザのデフォルトのプログラムに対すでの検索のための展望などを実行します。

OS Xでは、この実行コマンド:

open mailto:?subject=MySubject&body=TheBody

URLエスケープを置き換えスペース %20.

更新 Windowsでは、遊びのあらゆるゲームの取得 start 走ります。ここでは、適切なJava唱:

class Win32 extends OS {
    public void email(String subject, String body) throws Exception {
        String cmd = "cmd.exe /c start \"\" \"" + formatMailto(subject, body) + "\"";
        Runtime.getRuntime().exec(cmd);
    }
}
役に立ちましたか?

解決

Java1.6いstardard公開デフォルトのメーラーのプラットフォームのデスクトップに作成されます。メール(URI)の方法.そのURIを使用するすべての分野においては、メール(送信者、受益者、身体、ないものとします。チェックでき例のデスクトップの統合、Java1.6 用のデスクトップAPIのJava SE6

他のヒント

start 動作するウィンドウ(下記を参照)。混雑して待たされることJavaの建UrlEscapeその走りは第二の交換のための'+'文字です。

start mailto:"?subject=My%20Subject&body=The%20Body"

1.追加の件

できprefillを対象に、メールの添加により目の前に'?対象= 後のメールアドレスです。

そのリンクになります:

<a href="mailto:someone@yoursite.com?subject=Mail from Our Site">Email Us</a> 

2.多数の受信者に送信

メールを送信することができる追加者としての炭素のコピー(cc)または盲目の炭素のコピー(bcc).

これは同様に、"'?cc=someoneelse@theirsite.com 後最初のアドレスです。

そのリンクは以下のようなものです:

<a href="mailto:someone@yoursite.com?cc=someoneelse@theirsite.com">Email Us</a>

ccするだけで簡単に交換によるbcc編入を希望する場合、盲目の炭素のコピー。

ことを確認することに非常に役立つ場合はリンク先ページの異なる。いのメールはそれぞれのページに適切な人の会社でのコピーを送信するメールの送信は中央のアドレスもございます

もちろんの指定を一つ以上追加者は、別のリストの受信者に[ドメイン]を選択します

<a href="mailto:someone@yoursite.com?cc=someoneelse@theirsite.com, another@thatsite.com, me@mysite.com">Email Us</a> 

から調達 くりからmailto' 今404s.私は取得されるコンテンツからwaybackmachine.

3.組み合わせコード

を組み合わせることができ、様々なビットの上記コードを加えて、'&'となる。

このように追加

me@mysite.com?subject=Hello&cc=you@yoursite.com&bcc=her@hersite.com

い送信メールの場合には、当該こんにちは'思っています。

4.記メール

こともできprefill本体のメールのメッセージ、または書きの場合のみメッセージ!追加があるものの身体をメールでも簡単に上-'?体= 後のメールアドレスです。しかしフォーマットをメールで少しトリッキー.を単語間のスペースをご利用の六角レンチコードは、例えば'%20'との間に単語または新たなライン平均の追加'%0D'.同様に記号など $ 標識する必要がある書面に六角レンチのコードです。

もご希望の場合を追加する件名、送信部と、複数の相手に、ここで非常に長いことが困難なwriteビットのコードです。

でメッセージを送人は、件名とメッセージは、演題が受付されていないだけで追加す。

を見ただけでも、それは明らかです~。

<a href="mailto:abbeyvet@outfront.net?CC=spooky@outfront.net
&BCC=thomasbrunt@outfront.net&Subject=Please%2C%20I%20insist
%21&Body=Hi%0DI%20would%20like%20to%20send%20you%20
%241000000%20to%20divide%20as%20you%20see%20fit%20among
%20yourselves%20and%20all%20the%20moderators.%0DPlease%
20let%20me%20know%20to%20whom%20I%20should%20send
%20the%20check.">this link</a> 

注意:オリジナルソースURLから今404ingい 手のコンテンツからwaybackmachine してこうなってしまいます。また、OPたなウェブサイトはこれらの例は、これらの技術ている場合があります。

があったので再実装を行うURLencode がJavaの利用+スペース メールした者は、文字通り.

わからない場合は、新しいパースペクティブの一部を内蔵方法urlencodingの文字列がこのリンク http://www.permadi.com/tutorial/urlEncoding/ 中でも最も普通字エンコード:

;       %3B
?       %3F
/       %2F
:       %3A
#       %23
&       %24
=       %3D
+       %2B
$       %26
,       %2C
space   %20 or +
%       %25
<       %3C
>       %3E
~       %7E
%       %25

わからない場合は、新しいパースペクティブの一部を内蔵方法urlencodingの文字列がこのリンク http://www.permadi.com/tutorial/urlEncoding/ 中でも最も普通字エンコード:

用%エンコーディングmailto URI hnamesとhvaluesに使っているのルール http://shadow2531.com/opera/testcases/mailto/modern_mailto_uri_scheme.html#encoding.下 http://shadow2531.com/opera/testcases/mailto/modern_mailto_uri_scheme.html#implementations, がJavaえることがあります。

基本的には使用してい:

private String encodex(final String s) {
    try {
        return java.net.URLEncoder.encode(s, "utf-8").replaceAll("\\+", "%20").replaceAll("\\%0A", "%0D%0A");
    } catch (Throwable x) {
        return s;
    }
}

の文字列が渡されるべき文字列 、迷 で正規化したり。

もう帰還元の文字列の例外のように上が安全な場合は、mailto URI引数だけをコマンドラインが適切にエスケープされたび引用されます。

Windowsをおこなうことができ、

  1. 見積もりの引数に使います。
  2. 逃げ切に引用すること.
  3. 逃げ切\る前に"または文字列の末尾に付\.

また、windowsであれば、対応UTF-16文字列のようにJavaするために使用ShellExecuteWを"開く"をmailto URIです。ない場合、戻りsの例外があhvalueなっ%が符号化された、終わ縮小の一部のワイド文字とな情報です。でも、なすべてのメールクライアント受け入れunicodeの引数が、理想的には、渡したい、適切に割-符号化-utf8ascii引数ShellExecute.

のように'開始',ShellExecuteと"公開"を開mailto URIのデフォルトクライアント

からないのでその他のOSです。

使用しな Runtime.exec(String) Mac OS Xまたはその他の営業システム。だが、いよいのかを適切に引用したすべての引数が文字列などこの痛みは、非常にエラーが発生しやすい.

代わりに使用します Runtime.exec(String[]) る配列の区切りを引数になります。これはすでにほとんど全ての用途.

Mailtoな悪路です。でも、だれていることを確認してください符号化されたのを修正

主な問題をmailtoは破れます。使%0A運送を返%20ます。

また、このmailtoと同じURLとしてある種、そのため同じ制限さい。見 http://support.microsoft.com/kb/208427, 注最大のURLの長さ2083文字です。この確認のためのmailtoとして この記事: http://support.microsoft.com/kb/279460/en-us.また、一部のメールクライアントでも限界だと思い古いバージョンの展望を表現した制限のいくらい小さいのような483文字があります。合することを期待stringのこしょうを見る必要があります。

ちなみないと思いますのインタビューをチェックを蹴スクリプトなどできるだけ長くなるかも知れない"というコマンドからJavaないわからない場合はできていないJava).

にお使いいただけ...

main(string[] args){    
String forUri = String.format("mailto:?subject=%s&body=%s",  urlEncode(sub), urlEncode(mailBody));
                        Desktop.getDesktop().mail(new URI(forUri));
}

private static final String urlEncode(String str) {
        try {
            return URLEncoder.encode(str, "UTF-8").replace("+", "%20");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
    }

またフォーマットの読み このメール送信Java:メールをリンク

して実施することで、OS Xにお(ライアンのこのURLの長されていない化.)

public void email(String subject, String body) throws Exception {
    String cmd = "open mailto:";        
    cmd += "?subject=" + urlEncode(subject);
    cmd += "&body=" + urlEncode(body);
    Runtime.getRuntime().exec(cmd);
}

private static String urlEncode(String s) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        char ch = s.charAt(i);
        if (Character.isLetterOrDigit(ch)) {
            sb.append(ch);
        }
        else {
            sb.append(String.format("%%%02X", (int)ch));
        }
    }
    return sb.toString();
}

があったので再実装を行うURLencodeがJavaの利用 + スペースとメールした者は、文字通り.だ試Windowsていない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top