Вопрос:

mailto link with HTML body

html email mailto

393689 просмотра

12 ответа

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

I have a couple of mailto links in a HTML document.

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

Can I insert HTML formatted body in the mailto: part of the href?

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

Note that (2016) in iOS, it is perfectly fine to add <i> and <b> tags for simple italic, bold formatting.

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

Ответы (12)


94 плюса

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

No. This is not possible at all.

Автор: 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

52 плюса

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

Я использовал это, и похоже, что он работает с 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

76 плюса

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

Whilst it is NOT possible to use HTML to format your email body you can add line breaks as has been previously suggested.

If you are able to use javascript then "encodeURIComponent()" might be of use like below...

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 плюса

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

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

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

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

406 плюса

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

Решение

As you can see in RFC 6068, this is not possible at all:

The special <hfname> "body" indicates that the associated <hfvalue> is the body of the message. The "body" field value is intended to contain the content for the first text/plain body part of the message. The "body" pseudo header field is primarily intended for the generation of short text messages for automatic processing (such as "subscribe" messages for mailing lists), not for general MIME bodies.

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

-3 плюса

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

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

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

24 плюса

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

Некоторые вещи возможны, но не все, скажем, например, вы хотите разрывы строк вместо <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

-11 плюса

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

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

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

Выход будет:

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

31 плюса

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

Это не совсем то, что вам нужно, но возможно с помощью современного 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 Репутация автора

Любой может попробовать следующее (функция mailto принимает только открытый текст, но здесь я покажу, как использовать свойства внутреннего текста HTML и как добавить привязку в качестве параметров mailto body):

//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
Автор: Miguel Ballén Размещён: 12.06.2019 09:07

0 плюса

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

Thunderbird поддерживает html-body :mailto:me@me.com?subject=Me&html-body=<b>ME</b>

Автор: Peter Размещён: 05.09.2019 09:57
Вопросы из категории :
32x32