سؤال

لدي رابط mailto في علامة مرساة

<a href="mailto:?subject=Subject&body=Body">Email This</a>

المشكلة هي أن معلمة الجسم هي مقالة ضخمة ، ويبدو أن هناك حد للحرف على عنوان URL.

هل هناك طريقة للتغلب على الحد؟

هل كانت مفيدة؟

المحلول

هل هناك طريقة للتغلب على الحد؟

صعب جدا.

من المحتمل أن تكون القيود تختلف من المتصفح إلى المتصفح ، أو من عميل البريد الإلكتروني إلى عميل البريد الإلكتروني.

أفضل استخدام نموذج HTML ونصي من جانب الخادم لإرسال الرسالة.

نصائح أخرى

نعم ، هناك حد على طول عنوان URL.

يختلف الحد من المتصفح إلى المتصفح ، لذلك يجب عليك الاحتفاظ بعنوان URL أقل من 2000 حرفًا ليكون آمنًا.

يبدو أن Internet Explorer هو المتصفح الذي يحتوي على أقصر حد. وفق هذه المقالة إنه 2083 حرفًا.

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

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

جئت عبر هذا المحلول, ، لكنني لا أفهم لماذا يعمل ، أتركه هنا على أي حال

function sendEmails(emails) {
  var timeout = 2000;
  var mailtoPrefix = 'mailto:?bcc=';
  var maxUrlCharacters = 1900;
  var separator = ';';
  var currentIndex = 0;
  var nextIndex = 0;

  if (emails.length < maxUrlCharacters) {
    window.location = mailtoPrefix + emails;
    return;
  }

  do {
    currentIndex = nextIndex;
    nextIndex = emails.indexOf(separator, currentIndex + 1);
  } while (nextIndex != -1 && nextIndex < maxUrlCharacters)

  if (currentIndex == -1) {
    window.location = mailtoPrefix + emails;
  } else {
    window.location = mailtoPrefix + emails.slice(0, currentIndex);
    setTimeout(function () {
      sendEmails(emails.slice(currentIndex + 1));
    }, timeout);
  }
}

الاستخدام:

var emails = 'a@a.com;b@b.com;c@c.com';
sendEmails(emails);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top