Вопрос:

mailto ссылка с телом HTML

html email mailto

381588 просмотра

11 ответа

1775 Репутация автора

У меня есть несколько mailtoссылок в документе HTML.

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

Могу ли я вставить тело в формате HTML в mailto:часть href?

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

Обратите внимание, что (2016) в iOS, это прекрасно, чтобы добавить <i>и <b>теги для простого курсивного, жирного форматирования.

Автор: GxG Источник Размещён: 11.04.2011 10:58

Ответы (11)


94 плюса

669242 Репутация автора

Нет, это невозможно вообще.

Автор: Quentin Размещён: 11.04.2011 11:01

-30 плюса

309 Репутация автора

Вот как вы все добавляете в ссылку MAILTO:

<a href="mailto:YourName@YourSite.com? cc=someone@YourSite.com&bcc=someoneElse@YourSite.com &subject=Shipping%20Information%20Request&body=Please%20tell%20me%20if%20my%20order%20has%20shipped!">Shipping Request</a>

Каждый компонент отделяется знаком амперсанда (&). Только первый компонент после исходного адреса электронной почты имеет знак вопроса (?), Предшествующий амперсанду.

URL-кодирование является ключом! Так что для вашего примера тела, а не вашего

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

... вы можете попробовать:

href='mailto:me@me.com?subject=Me&body=%3cb%3eME%3c%2fb%3e'

Вот еще один маршрут, который вы можете попробовать. Создайте функцию javascript для открытия объекта ActiveX. К сожалению, это ограничивает работу только в IE и Outlook и может привести к тому, что на вашей странице будут отображаться предупреждения activex. Но если вы можете жить с этими предостережениями, это делает работу. Вот рабочий образец, из которого вы можете извлечь:

<html>
    <head>
        <script type='text/javascript' language='javascript'>
            function OpenOutlookNewEmail()
            {
                try
                {
                    var outlookApp = new ActiveXObject("Outlook.Application");
                    var nameSpace = outlookApp.getNameSpace("MAPI");
                    mailFolder = nameSpace.getDefaultFolder(6);
                    mailItem = mailFolder.Items.add('IPM.Note.FormA');
                    mailItem.Subject = "Me";
                    mailItem.To = "me@me.com";
                    mailItem.HTMLBody = "<b>ME</b>";
                    mailItem.display(0);
                }
                catch (e)
                {
                    alert(e);
                    // act on any error that you get
                }
            }
        </script>
    </head>
    <body>
        <a href='javascript:OpenOutlookNewEmail()' >email</a>
    </body>
</html>
Автор: Benjamin Johnson Размещён: 11.04.2011 11:01

50 плюса

1860 Репутация автора

Я использовал это, и похоже, что он работает с outlook, не используя html, но вы можете форматировать текст по крайней мере, когда тело добавляется как вывод.

<a href="mailto:email@address.com?subject=Hello world&body=Line one%0DLine two">Email me</a>
Автор: Andy Размещён: 23.02.2012 11:04

77 плюса

11344 Репутация автора

Хотя использовать 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;
Автор: Oliver Pearmain Размещён: 09.05.2012 04:38

16 плюса

7543 Репутация автора

Стоит отметить, что на сафари на iPhone, по крайней мере, вставляя основные HTML - теги , например <b>, <i>и <img>(что в идеале вы не должны использовать в других обстоятельствах больше в любом случае, отдавая предпочтение CSS) в параметр тела в mailto:действительно кажется работа - они соблюдаются в почтовом клиенте. Я не провел исчерпывающее тестирование, чтобы увидеть, поддерживается ли это другими мобильными или настольными браузерами / почтовыми клиентами. Также сомнительно, действительно ли это соответствует стандартам. Может быть полезно, если вы строите для этой платформы, хотя.

Как отмечалось в других ответах, вы должны также использовать encodeURIComponent на всем теле, прежде чем встраивать его в mailto:ссылку.

Автор: Andrew Ferrier Размещён: 17.05.2012 02:38

399 плюса

4238 Репутация автора

Решение

Как вы можете видеть в RFC 6068 , это вообще невозможно:

Специальное <hfname>«тело» указывает, что ассоциированное <hfvalue> является телом сообщения. Значение поля «body» предназначено для содержания содержимого первой текстовой / простой части тела сообщения. Поле псевдозаголовка «body» в первую очередь предназначено для генерации коротких текстовых сообщений для автоматической обработки (таких как сообщения «подписка» для списков рассылки), а не для общих тел MIME.

Автор: Alfonso Marin Размещён: 16.11.2012 11:47

-3 плюса

371 Репутация автора

Можно ввести значения Unicode для вставки новых строк (т. Е. \u0009), Но HTML-теги имеют различную степень поддержки и их следует избегать.

Автор: Ryan Dunphy Размещён: 13.09.2013 07:54

23 плюса

303 Репутация автора

Некоторые вещи возможны, но не все, скажем, например, вы хотите разрывы строк вместо <br />использования%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>                        
Автор: Stephen Kaufman Размещён: 28.01.2014 08:40

-10 плюса

27 Репутация автора

Я работал так:

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

Выход будет:

Hello
World  
Автор: Ravi Solanki Размещён: 22.11.2016 09:58

27 плюса

631 Репутация автора

Это не совсем то, что вам нужно, но возможно с помощью современного javascript создать EML-файл на клиенте и передать его в файловую систему пользователя, которая должна открыть расширенную электронную почту, содержащую HTML, в его почтовой программе, такой как Outlook:

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);
})();
Автор: Matthew Размещён: 12.10.2017 01:11

0 плюса

11 Репутация автора

Любой может попробовать следующее:

//Create as many html elements you need.

const titleElement = document.createElement("DIV");
titleElement.innerHTML = this.shareInformation.title;

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

...

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

// Using es6 template literals add the html elements created to mail element body
mail.href = 
  `mailto:?subject=${titleElement.innerText}&body=${titleLinkElement}%0D%0A${abstractElement.innerText}`;
mail.click();
Автор: Miguel A. Ballén Размещён: 12.06.2019 09:07
Вопросы из категории :
32x32