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>

ध्यान दें कि (2016) iOS में, साधारण इटैलिक, बोल्ड फॉर्मेटिंग के लिए जोड़ना <i>और <b>टैग करना पूरी तरह से ठीक है ।


1
मन में बिल्कुल यही बात थी और थोड़ी देर के लिए इसका अध्ययन किया। मैं संदेश निकाय में एक एम्बेडेड रिमोट <img> करने की कोशिश कर रहा था। मेल्टो निर्देश को काम करने के लिए URL-एन्कोडेड होना चाहिए। थंडरबर्ड के साथ परिणाम यह था कि HTML शरीर शाब्दिक रूप से प्रकट हुआ, इसके सभी <img> निर्देश और सभी। मुझे लगता है कि यह थंडरबर्ड और अधिकांश मेल क्लाइंट में एक सुरक्षा मुद्दा है - वे आने वाली मेल-सामग्री को पार्स करते हैं ताकि यह कुछ भी संदिग्ध न हो।
हेंस आर।

4
सबसे अच्छा मैं इस पृष्ठ से आया, zaposphere.com/html-email-links-code .. नीचे नीचे एक सूची देता है: "अन्य शांत अनुकूलन जो अधिकांश अन्य वेबसाइटों का उल्लेख नहीं करते हैं !!" मेरी बहुत मदद की।
स्टु एंड्रयूज

आप मूल पाठ के साथ ईमेल के प्रत्येक भाग को सेट कर सकते हैं। उन सीमाओं के संबंध में जो html फ़ॉर्मेटिंग संभव नहीं है, यहाँ एक उपकरण है जिसे मैंने एक मेलो डेड सिंपल में विभिन्न क्षेत्रों को कस्टमाइज़ करने के लिए बनाया है: mailto.now.sh
डॉसन बी

जवाबों:


428

जैसा कि आप RFC 6068 में देख सकते हैं , यह बिल्कुल भी संभव नहीं है:

विशेष <hfname>"शरीर" इंगित करता है कि संबंधित <hfvalue> संदेश का शरीर है। "बॉडी" फ़ील्ड मान का उद्देश्य संदेश के पहले पाठ / सादे बॉडी भाग के लिए सामग्री को समाहित करना है। "बॉडी" छद्म हेडर फ़ील्ड मुख्य रूप से स्वचालित प्रसंस्करण के लिए लघु पाठ संदेशों की पीढ़ी के लिए अभिप्रेत है (जैसे मेलिंग सूचियों के लिए "सदस्यता" संदेश), सामान्य MIME निकायों के लिए नहीं।


4
@ जोएब्लो उत्तर अभी भी सही है। RFC 6068 जो 2368 को मानती है फिर भी कहती है कि शरीर एक सादा पाठ है।
मार्कस लाइरे

8
यदि आप इस उत्तर से निराश हैं, तो कृपया पढ़ते रहें: stackoverflow.com/a/46699855/25627 (tl; dr .eml फ़ाइलें)
जो

95

नहीं, यह संभव नहीं है।


1
सख्ती से सच नहीं। जबकि समर्थन बहुत दुर्लभ है, अन्य उत्तरों से पता चला है कि कुछ सीमित HTML iOS में संभव है और IE + ActiveX + Outlook (urgh, yuck) का संयोजन है।
साइमन ईस्ट

89

जब तक आपके ईमेल बॉडी को फॉर्मेट करने के लिए एचटीएमएल का उपयोग करना संभव नहीं है, आप पहले से सुझाए गए अनुसार लाइन ब्रेक जोड़ सकते हैं।

यदि आप जावास्क्रिप्ट का उपयोग करने में सक्षम हैं तो नीचे दिए गए "एन्कोडोडाइकम्पोनेंट ()" का उपयोग किया जा सकता है ...

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

1
क्या ईमेल क्लाइंट एम्बेडेड जावास्क्रिप्ट चला सकते हैं? ओपी का कहना है कि यह एक ईमेल है न कि एक वेबपेज, जिस पर mailto: लिंक होगा।
wide_eyed_pupil

धन्यवाद, रेल में आप raw("text \n more text \n\n\t")पाठ को
एनकैप्सुलेट

इसने मेरे लिए काम किया, एक क्रोम "मेल्टो" से आउटलुक में भेजना। ध्यान दें कि आपको केवल बॉडी टेक्स्ट को एनकोड करना होगा, न कि पूरे मेल्टो स्ट्रिंग को; और आपको पहले / बाद में रिक्त स्थान की आवश्यकता नहीं है \n
ल्यूक

2
मुझे यह तरीका पसंद आया, यहाँ इसे एक्शन में देखने के लिए एक jsfiddle है: jsfiddle.net/oligray/5uosngy4
ओलिवर ग्रे

3
आप लाइन लाइन के लिए% 0A का भी उपयोग कर सकते हैं, इसलिए आपको इसे जावास्क्रिप्ट से करने की आवश्यकता नहीं है।
डिर्क बोअर

58

मैंने इसका उपयोग किया है और यह html के उपयोग से नहीं बल्कि आउटलुक के साथ काम करता है, लेकिन आप आउटपुट के साथ पाठ को कम से कम तब तोड़ सकते हैं जब शरीर को आउटपुट के साथ जोड़ा जाता है।

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

2
तो "% 0D" न्यूलाइन है। एक एन्कोडेड टैब का कोड क्या है?
wide_eyed_pupil

3
% 0D एक नई पंक्ति है जो ctrl-m है, एक टैब ctrl-i है जो% 09 है। ASCII चार्ट को इस तरह से देखें [ asciitable.com/index/asciifull.gif] । नियंत्रण वर्ण 1 से 31 तक हैं। @wide_eyed_pupil
जिम बर्गमैन

2
ऐसा करते समय कोई भी हस्ताक्षर हटाए गए प्रतीत होते हैं।
वैलेंटाइन डेस्पा

% 0A n \ होगा
Klemen Tušar

3
यह एक HTML निकाय नहीं है!
क्लो

46

यह काफी नहीं है कि आप क्या चाहते हैं, लेकिन क्लाइंट पर एक ईएमएल फ़ाइल बनाने के लिए आधुनिक जावास्क्रिप्ट का उपयोग करना संभव है और उपयोगकर्ता की फाइल सिस्टम को स्ट्रीम करें, जो कि अपने मेल प्रोग्राम में HTML युक्त एक समृद्ध ईमेल खोलें, जैसे कि आउटलुक:

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

यहाँ छवियों और तालिकाओं वाले ईमेल का jsfiddle है: https://jsfiddle.net/seanodotcom/yd1n8Lfh/

एचटीएमएल

<!-- 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>

जावास्क्रिप्ट

(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 मेल पर, यह फ़ाइल खुलेगी, लेकिन संपादन योग्य / भेजने योग्य नहीं होगी, यह एक भेजे गए ईमेल रिकॉर्ड की तरह काम करता है
pmarreck

1
Apple मेल (11.2) के साथ, एक बार जब आपने .eml फ़ाइल खोली है, तो आप ईमेल को संपादन मोड में डालने के लिए मेनू (शिफ्ट-सेमी-डी) से संदेश / सेंड अगेन चुन सकते हैं।
जेफ कोलियर

31

कुछ चीजें संभव हैं, लेकिन सभी नहीं, उदाहरण के लिए कहें कि आप उपयोग के बजाय लाइन ब्रेक चाहते <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>                        

7
यह HTML नहीं है ... अभी भी पाठ है।
ब्रैड

यदि आप $ mailheader का उपयोग करके अपने ईमेल को प्रारूपित नहीं करते हैं। = "सामग्री-प्रकार: पाठ / html; चारसेट = iso-8859-1 \ r \ n";
स्टीफन कॉफमैन 16

12
@StephenKaufman - आप ईमेल भेजने वाले व्यक्ति नहीं हैं, बल्कि लिंक पर क्लिक करने वाले ग्राहक हैं। मतलब आपको पता नहीं है कि ईमेल क्लाइंट कैसे सेट किया जाता है। आपको नहीं पता कि इसके हेडर कैसे सेट किए जाते हैं। यह कुछ ईमेल क्लाइंट पर काम करेगा, और दूसरों पर नहीं करेगा।
Narxx 12

1
धन्यवाद, यह मेरे लिए दूसरा सबसे अच्छा विकल्प था, अगर मैं html नहीं कर सकता, तो कम से कम मैं गाड़ी रिटर्न कर सकता हूं। मेरी ओर से मंजूरी है।
नमस्कार

16

यह उनका कहना है कि iPhone पर सफारी पर, कम से कम, इस तरह के रूप मूल HTML टैग्स डालने के लायक है <b>, <i>और <img>(जो आदर्श यदि आप अब भी अन्य परिस्थितियों में उपयोग नहीं करना चाहिए, सीएसएस पसंद करते हैं) में शरीर पैरामीटर में mailto:करने के लिए प्रकट होता है काम - उन्हें ईमेल क्लाइंट के भीतर सम्मानित किया जाता है। मैंने यह देखने के लिए विस्तृत परीक्षण नहीं किया है कि क्या यह अन्य मोबाइल या डेस्कटॉप ब्राउज़र / ईमेल क्लाइंट कॉम्बो द्वारा समर्थित है। यह भी संदिग्ध है कि क्या यह वास्तव में मानकों के अनुरूप है। यदि आप उस मंच के लिए निर्माण कर रहे हैं, तो उपयोगी हो सकता है, हालांकि।

जैसा कि अन्य प्रतिक्रियाओं ने उल्लेख किया है, आपको mailto:लिंक में एम्बेड करने से पहले पूरे शरीर पर एन्कोडर्कोम्पोनेंट का भी उपयोग करना चाहिए ।


हां, यह सरल बोल्ड, इटैलिक टैग जोड़ने के लिए पूरी तरह से काम करता है - वैसे भी आईओएस में।
फेटी

IOS पर मैं <img src = 'mybase64' /> के साथ सही ईमेल नहीं भेज सकता - जीमेल में मैं अपने संदेश के अंदर base64 देखता हूं।
विटाली ज़डनेविच


0

Html साझा करने के संबंध में मेरे पास एक ही मुद्दा है। मैं मेरे लिए html काम से नीचे करता हूं। <के साथ <और> को बदलें।

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

नोट: यह केवल ubuntu में काम करता है। यह खिड़कियों में काम नहीं करेगा।


-1

कोई भी व्यक्ति निम्नलिखित कोशिश कर सकता है (mailto फ़ंक्शन केवल सादा पाठ स्वीकार करता है, लेकिन यहां मैं दिखाता हूं कि HTML इनरटेक्स्ट गुणों का उपयोग कैसे करें और mailto body params के रूप में एक एंकर कैसे जोड़ें):

//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  
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.