هل من الممكن إضافة رابط HTML في نص رابط MAILTO [نسخة مكررة]

StackOverflow https://stackoverflow.com/questions/247245

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

لم أضطر إلى العبث بروابط mailto كثيرًا.ومع ذلك فأنا الآن بحاجة إلى إضافة رابط في نص mailto إذا كان ذلك ممكنًا.

هل هناك طريقة لإضافة رابط أو تغيير البريد الإلكتروني المفتوح إلى بريد إلكتروني بتنسيق html مقابل بريد إلكتروني نصي؟

شيء مثل:

<a href="mailto:test@test.test?body=The message's first paragraph.%0A%0aSecond paragraph.%0A%0AThird Paragraph.%0A%0ALink goes here">Link text goes here</a>
هل كانت مفيدة؟

المحلول

القسم 2 من آر إف سي 2368 يقول أن body من المفترض أن يكون الحقل في text/plain التنسيق، لذلك لا يمكنك عمل HTML.

ومع ذلك، حتى إذا كنت تستخدم نصًا عاديًا، فمن الممكن أن تعرض بعض برامج البريد الحديثة عنوان URL كارتباط قابل للنقر عليه على أي حال.

نصائح أخرى

أضف الرابط كاملا مع:

 "http://"

إلى بداية السطر، وسيقوم معظم عملاء البريد الإلكتروني اللائقين بربطه تلقائيًا إما قبل الإرسال، أو في الطرف الآخر عند الاستلام.

بالنسبة إلى عناوين URL الطويلة التي من المحتمل أن تلتف بسبب جميع المعلمات، قم بلف الرابط برمز أقل من/أكبر من.هذا يخبر عميل البريد الإلكتروني لا لالتفاف عنوان URL.

على سبيل المثال

  <http://www.example.com/foo.php?this=a&really=long&url=with&lots=and&lots=and&lots=of&prameters=on_it>

هذا غير ممكن على حد علمي، نظرًا لأن الرابط يحتاج إلى HTML، ولا تنشئ روابط mailto بريدًا إلكترونيًا بتنسيق HTML.

ربما يكون هذا للأمان حيث يمكنك إضافة جافا سكريبت أو إطارات iframe إلى هذا الرابط وقد يفتح عميل البريد الإلكتروني المستخدم النهائي لنقاط الضعف.

يرجى التحقق أدناه من جافا سكريبت في IE.لا أعرف ما إذا كان المتصفح الحديث الآخر سيعمل أم لا.

<html>
    <head>
        <script type="text/javascript">
            function OpenOutlookDoc(){
                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="a subject test";
                    mailItem.To = "an@email.here";
                    mailItem.HTMLBody = "<b>bold</b>";
                    mailItem.display (0); 
                }
                catch(e){
                    alert(e);
                    // act on any error that you get
                }
            }
        </script>
    </head>
    <body>
        <a href="javascript:OpenOutlookDoc()">Click</a>
    </body>
</html>

وهنا ما قمت بتجميعه.إنه يعمل على الجهاز المحمول المحدد الذي أحتاجه من أجله، لكنني لست متأكدًا من مدى عالمية الحل

<a href="mailto:me@me.com?subject=Me&body=%3Chtml%20xmlns%3D%22http:%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3E%3C%2Fhead%3E%3Cbody%3EPlease%20%3Ca%20href%3D%22http:%2F%2Fwww.w3.org%22%3Eclick%3C%2Fa%3E%20me%3C%2Fbody%3E%3C%2Fhtml%3E">

مواصفات نص "mailto" تقول:

نص الرسالة هو مجرد أسطر من أحرف US-ASCII.

  • يجب أن يحدث CR وLF معًا فقط كـ CRLF؛ويجب ألا تظهر بشكل مستقل في الجسم.
  • يجب أن تقتصر سطور الأحرف في النص على 998 حرفًا، ويجب أن تقتصر على 78 حرفًا، باستثناء CRLF.

https://tools.ietf.org/html/rfc5322#section-2.3

بشكل عام، يجيد معظم عملاء البريد الإلكتروني في الوقت الحاضر الربط التلقائي، ولكن ليس جميعهم يقومون بذلك، وذلك بسبب المخاوف الأمنية.من المحتمل أن تجد بعض الحلول، ولكنها لن تعمل بالضرورة بشكل عام.

لقد قمت بتطبيقه على أجهزة iOS ولكنه فشل على أجهزة Android

<a  href="mailto:?subject=Your mate might be interested...&body=<div style='padding: 0;'><div style='padding: 0;'><p>I found this on the site I think you might find it interesting.  <a href='@(Request.Url.ToString())' >Click here </a></p></div></div>">Share This</a>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top