it-swarm.com.de

mailto link mit HTML body

Ich habe ein paar mailto Links in einem HTML-Dokument.

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

Kann ich einen im HTML-Format formatierten Text in den Teil mailto: von href einfügen?

<a href="mailto:[email protected]?subject=Me&body=<b>ME</b>">Mail me</a>

Beachten Sie, dass es in iOS (2016) vollkommen in Ordnung ist, die Tags <i> und <b> für eine einfache kursive und fett gedruckte Formatierung hinzuzufügen.

288
GxG

Wie Sie in RFC 6068 sehen können, ist dies überhaupt nicht möglich:

Der spezielle <hfname> "Body" gibt an, dass der zugehörige <hfvalue> der Body der Nachricht ist. Der Feldwert "body" soll den Inhalt für den ersten Text/Nur-Text-Teil der Nachricht enthalten. Das Pseudo-Header-Feld "body" ist in erster Linie für die Generierung kurzer Textnachrichten zur automatischen Verarbeitung vorgesehen (z. B. "Subscribe" -Nachrichten für Mailinglisten), nicht für allgemeine MIME-Body.

406
Alfonso Marin

Nein, das ist überhaupt nicht möglich.

94
Quentin

Während es NICHT möglich ist, HTML zum Formatieren Ihres E-Mail-Körpers zu verwenden, können Sie Zeilenumbrüche hinzufügen, wie zuvor vorgeschlagen.

Wenn Sie in der Lage sind, Javascript zu verwenden, könnte "encodeURIComponent ()" wie folgt von Nutzen sein ...

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:[email protected]?body=" + encodeURIComponent(formattedBody);
window.location.href = mailToLink;
76
Oliver Pearmain

Ich habe dies verwendet und es scheint mit Outlook zu funktionieren, nicht mit HTML, aber Sie können den Text mit Zeilenumbrüchen formatieren, zumindest wenn der Körper als Ausgabe hinzugefügt wird.

<a href="mailto:[email protected]?subject=Hello world&body=Line one%0DLine two">Email me</a>
52
Andy

Es ist nicht ganz das, was Sie wollen, aber es ist mit modernem Javascript möglich, eine EML-Datei auf dem Client zu erstellen und diese an das Dateisystem des Benutzers zu streamen, das eine umfangreiche E-Mail mit HTML in seinem E-Mail-Programm wie Outlook öffnen soll:

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

Hier ist eine jsfiddle einer E-Mail mit Bildern und Tabellen: https://jsfiddle.net/seanodotcom/yd1n8Lfh/

HTML

<!-- https://jsfiddle.net/seanodotcom/yd1n8Lfh -->
<textarea id="textbox" style="width: 300px; height: 600px;">
To: User <[email protected]>
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);
})();
31
Matthew

Einige Dinge sind möglich, aber nicht alle, z. B. möchten Sie Zeilenumbrüche, anstatt <br />use %0D%0A zu verwenden.

Beispiel:

<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>                        
24
Stephen Kaufman

Es sei darauf hingewiesen, dass Sie auf Safari auf dem iPhone zumindest grundlegende HTML-Tags wie <b>, <i> und <img> einfügen sollten (was Sie unter anderen Umständen idealerweise nicht verwenden sollten) Außerdem scheint es zu funktionieren, CSS) in den body-Parameter in mailto: einzufügen - sie werden im E-Mail-Client berücksichtigt. Ich habe keine umfassenden Tests durchgeführt, um festzustellen, ob dies von anderen Kombinationen aus mobilem Browser oder Desktop-Browser und E-Mail-Client unterstützt wird. Es ist auch zweifelhaft, ob dies wirklich normenkonform ist. Könnte nützlich sein, wenn Sie für diese Plattform bauen.

Wie in anderen Antworten erwähnt, sollten Sie encodeURIComponent auch für den gesamten Körper verwenden, bevor Sie ihn in den Link mailto: einbetten.

16
Andrew Ferrier

Jeder kann Folgendes versuchen (die mailto-Funktion akzeptiert nur Klartext, aber hier zeige ich, wie man HTML-Innertexteigenschaften verwendet und einen Anker als mailto-body-Parameter hinzufügt):

//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
0
Miguel Ballén