HTML本文のmailtoリンク


319

mailtoHTMLドキュメントにいくつかのリンクがあります。

<a href="mailto:etc...">

HTML形式の本文を mailto:部分にhrefか?

<a href="mailto:me@me.com?subject=Me&body=<b>ME</b>">Mail me</a>

iOSの(2016)では、追加<i>して<b>、単純なイタリックで太字のフォーマットタグません。


1
まったく同じことを念頭に置いて、しばらく勉強しました。メッセージ本文にリモート<img>を埋め込もうとしました。mailto命令を機能させるには、URLエンコードする必要があります。thunderbirdでの結果は、HTML本体がすべての<img>命令とすべてとともに文字どおりに表示されることでした。これはthunderbirdとほとんどのメールクライアントの安全性の問題だと思います。受信したmailto-contentを解析して、疑わしい動作を行わないようにします。
Hannes R.

4
私が見つけた最高のものは、このページzaposphere.com/html-email-links-code .. から来ました。下部にリストが表示されます:「他のほとんどのWebサイトが言及していない他のクールなカスタマイズ!!」たくさん助けてくれました。
Stu Andrews

メールのすべての部分に基本的なテキストを設定できます。HTMLの書式が不可能であることの制限に関しては、ここで私は、mailtoの死者シンプルで様々なフィールドをカスタマイズするために構築されたツールです:mailto.now.sh
ドーソンB

回答:


428

RFC 6068でわかるように、これはまったく不可能です。

特別な<hfname>「本文」は、関連付けられ<hfvalue> ているのがメッセージの本文であることを示します。「body」フィールドの値は、メッセージの最初のテキスト/プレーンボディ部分のコンテンツを含むことを目的としています。「body」疑似ヘッダーフィールドは、自動処理用のショートテキストメッセージ(メーリングリスト用の「subscribe」メッセージなど)の生成を主な目的としており、一般的なMIME本文用ではありません。


4
@JoeBlow Answerはまだ正しいです。2368を廃止したRFC 6068では、本文はプレーンテキストであるといわれています。
Markus Laire、2016

8
この回答にがっかりした場合は、読み続けてください:stackoverflow.com/a/46699855/256272(tl; dr .eml files)
Joe

95

いいえ、これはまったく不可能です。


1
厳密には当てはまりません。サポートは非​​常に少ないですが、他の回答では、iOSとIE + ActiveX + Outlookの組み合わせで一部の制限されたHTMLが可能であることが示されています(いや、残念です)。
Simon East

89

HTMLを使用してメール本文をフォーマットすることはできませんが、以前に提案されているように改行を追加できます。

javascriptを使用できる場合は、「encodeURIComponent()」が次のように使用されている可能性があります...

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:x@y.com?body=" + encodeURIComponent(formattedBody);
window.location.href = mailToLink;

1
メールクライアントで埋め込みJavascriptを実行できますか?OPは、これはmailto:リンクが配置されるWebページではなく、電子メールであると述べています。
wide_eyed_pupil 2012

おかげで、Railsでは、raw("text \n more text \n\n\t")関数を使用してテキストをカプセル化し、これをメール本文の改行とタブに変換できます
FireDragon

これは私にとってはうまくいき、Chromeの「mailto」からOutlookに送信しました。mailto文字列全体ではなく、本文のみをエンコードする必要があることに注意してください。また、の前後にスペースは必要ありません\n
ルーク

2
私はこのアプローチが好きでした、これが実際に動作するjsfiddle
Oliver Gray

3
%0Aを改行に使用することもできるため、JavaScriptから実行する必要はありません。
Dirk Boer

58

私はこれを使用しましたが、htmlを使用せずにOutlookで動作するようですが、少なくとも本文が出力として追加されている場合は、改行でテキストをフォーマットできます。

<a href="mailto:email@address.com?subject=Hello world&body=Line one%0DLine two">Email me</a>

2
したがって、「%0D」は改行です。エンコードされたタブのコードに相当するものは何ですか?
wide_eyed_pupil 2012

3
%0Dはctrl-mである改行で、タブは%09であるctrl-iです。次のようなASCIIチャートを見てください[ asciitable.com/index/asciifull.gif]。制御文字は1〜31です。@ wide_eyed_pupil
ジムバーグマン

2
これを行うと、署名が削除されるようです。
Valentin Despa 2013

%0Aは\ n
KlemenTušar16年

3
これはHTML本文ではありません!
クロエ

46

それはあなたが望むものではありませんが、最新のjavascriptを使用してクライアント上にEMLファイルを作成し、それをユーザーのファイルシステムにストリーミングすることができます。

https://stackoverflow.com/a/27971771/8595398

画像とテーブルを含むメールのjsfiddleは次のとおりです。https://jsfiddle.net/seanodotcom/yd1n8Lfh/

HTML

<!-- https://jsfiddle.net/seanodotcom/yd1n8Lfh -->
<textarea id="textbox" style="width: 300px; height: 600px;">
To: User <user@domain.demo>
Subject: Subject
X-Unsent: 1
Content-Type: text/html

<html>
<head>
<style>
    body, html, table {
        font-family: Calibri, Arial, sans-serif;
    }
    .pastdue { color: crimson; }
    table {
        border: 1px solid silver;
        padding: 6px;
    }
    thead {
        text-align: center;
        font-size: 1.2em;
        color: navy;
        background-color: silver;
        font-weight: bold;
    }
    tbody td {
        text-align: center;
    }
</style>
</head>
<body>
<table width=100%>
    <tr>
        <td><img src="http://www.laurell.com/images/logo/laurell_logo_storefront.jpg" width="200" height="57" alt=""></td>
        <td align="right"><h1><span class="pastdue">PAST DUE</span> INVOICE</h1></td>
    </tr>
</table>
<table width=100%>
    <thead>
        <th>Invoice #</th>
        <th>Days Overdue</th>
        <th>Amount Owed</th>
    </thead>
    <tbody>
    <tr>
        <td>OU812</td>
        <td>9</td>
        <td>$4395.00</td>
    </tr>
    <tr>
        <td>OU812</td>
        <td>9</td>
        <td>$4395.00</td>
    </tr>
    <tr>
        <td>OU812</td>
        <td>9</td>
        <td>$4395.00</td>
    </tr>
    </tbody>
</table>
</body>
</html>
</textarea> <br>
<button id="create">Create file</button><br><br>
<a download="message.eml" id="downloadlink" style="display: none">Download</a>

JavaScript

(function () {
var textFile = null,
  makeTextFile = function (text) {
    var data = new Blob([text], {type: 'text/plain'});
    if (textFile !== null) {
      window.URL.revokeObjectURL(textFile);
    }
    textFile = window.URL.createObjectURL(data);
    return textFile;
  };

  var create = document.getElementById('create'),
    textbox = document.getElementById('textbox');
  create.addEventListener('click', function () {
    var link = document.getElementById('downloadlink');
    link.href = makeTextFile(textbox.value);
    link.style.display = 'block';
  }, false);
})();

8
さて、それはすばらしいアイデアです
グレッグは

2
きちんとしたアイデアですが、念のため、最新のApple Mailでは、このファイルは開きますが編集/送信できません。送信された電子メールレコードのように機能します
pmarreck

1
Apple Mail(11.2)では、.emlファイルを開いたら、メニュー(shift-cmd-D)から[メッセージ] / [再送]を選択して、電子メールを編集モードにすることができます。
Jeff Collier

31

いくつかのことは可能ですが、すべてではありませんが、たとえば、<br />use%0D%0A

例:

<a href="mailto:?subject=&body=Hello,%0D%0A%0D%0AHere is the link to the PDF Brochure.%0D%0A%0D%0ATo view the brochure please click the following link: http://www.uyslist.com/yachts/brochure.pdf"><img src="images/email.png" alt="EMail PDF Brochure" /></a>                        

7
それはHTMLではありません...テキストのままです。
ブラッド

$ mailheader。= "Content-type:text / html; charset = iso-8859-1 \ r \ n"を使用して電子メールをフォーマットする場合はそうではありません。
Stephen Kaufman、2014

12
@StephenKaufman-メールを送信するのはあなたではなく、リンクをクリックするクライアントです。電子メールクライアントの設定方法がわからないという意味です。ヘッダーの設定方法がわかりません。これは一部のメールクライアントでは機能しますが、他のクライアントでは機能しません。
Narxx 14

1
おかげで、これは私にとって2番目に優れたオプションでした。HTMLを実行できない場合は、少なくともキャリッジリターンを実行できます。私は元気です。
ハミッシュ

16

これは、iPhone上のSafariで、少なくとも、などの基本的なHTMLタグを挿入することを指摘する価値がある<b><i><img>ボディパラメータに(理想的にはあなたがCSS好む、もうとにかく他の状況で使うべきではないもの)mailto:に表示されません仕事-彼らは電子メールクライアント内で尊敬されています。これが他のモバイルまたはデスクトップのブラウザー/電子メールクライアントの組み合わせでサポートされているかどうかを確認するための徹底的なテストは行っていません。これが本当に標準に準拠しているかどうかも疑わしいです。ただし、そのプラットフォーム用に構築している場合は役立つかもしれません。

他の応答で指摘されているように、mailto:リンクに埋め込む前に、本文全体でencodeURIComponentも使用する必要があります。


はい、とにかくiOSで単純な太字のイタリックタグを追加することは完全に機能します。
Fattie

iOSでは<img src = 'mybase64' />で正しいメールを送信できません-Gmailではメッセージ内にbase64が表示されます。
Vitaly Zdanevich


0

HTMLの共有に関して同じ問題があります。以下のhtml作業を行います。<を<&>で>に置き換えます。

<a href="mailto:?subject=link Share&body=&lt;a href='www.google.com'&gt;google&lt;/a&gt;">Email</a>

注:これはUbuntuでのみ機能します。Windowsでは機能しません。


-1

誰でも次のことを試すことができます(mailto関数はプレーンテキストのみを受け入れますが、ここではHTML innertextプロパティの使用方法とアンカーをmailto本文パラメーターとして追加する方法を示します)。

//Create as many html elements you need.

const titleElement = document.createElement("DIV");
titleElement.innerHTML = this.shareInformation.title; // Just some string

//Here I create an <a> so I can use href property
const titleLinkElement = document.createElement("a");
titleLinkElement.href = this.shareInformation.link; // This is a url

...

let mail = document.createElement("a");

// Using es6 template literals add the html innerText property and anchor element created to mailto body parameter
mail.href = 
  `mailto:?subject=${titleElement.innerText}&body=${titleLinkElement}%0D%0A${abstractElement.innerText}`;
mail.click();

// Notice how I use ${titleLinkElement} that is an anchor element, so mailto uses its href and renders the url I needed

-3

ユニコード値を入力して改行(つまり:)を挿入することは可能です\u0009が、HTMLタグはサポートの度合いが異なるため、回避する必要があります。


-11

私はこのように働きました:

var newLine = escape("\n");
var body = "Hello" + newLine +"World";

出力は次のようになります:

Hello
World  
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.