2010-11-01 35 views
8

tôi có một liên kết mailto trong một thẻ neoBắt xung quanh giới hạn ký tự mailto/href/url

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

Vấn đề là các thông số cơ thể là một bài viết rất lớn, và dường như có một giới hạn ký tự trên url.

Có cách nào để vượt qua giới hạn không?

Trả lời

9

Có cách nào để vượt qua giới hạn không?

Rất khó.

Thậm chí có thể có các giới hạn khác nhau giữa trình duyệt với trình duyệt hoặc từ ứng dụng khách E-Mail đến ứng dụng E-Mail.

Tôi thà sử dụng biểu mẫu HTML và tập lệnh phía máy chủ để gửi thư.

+0

Tôi không muốn gửi email thông báo. Tôi muốn nó hoạt động giống như một liên kết mailto thông thường, nơi người dùng có thể gửi email qua ứng dụng thư khách của họ. – HyderA

+0

@gAMBOOKa Tôi hiểu. Bạn có thể không may mắn cho điều đó ... Có thể gửi một liên kết đến thông tin thay thế? –

+0

Có, tôi đoán một đoạn trích và một liên kết sẽ phải làm. Cảm ơn! – HyderA

7

Có, có giới hạn về độ dài của URL.

Giới hạn thay đổi từ trình duyệt đến trình duyệt, vì vậy bạn nên giữ URL dưới 2000 ký tự để an toàn.

Internet Explorer có vẻ là trình duyệt có giới hạn ngắn nhất. Theo số this article là 2083 ký tự.

+1

Điều này cũng giữ cho href = "" đó là một vấn đề cho my href = "javascript: new Array (.....)" (mảng rất dài) – Spork

0

Có vấn đề với thẻ Mailto, nó thay đổi từ trình duyệt đến trình duyệt và ứng dụng email đến ứng dụng email. Trong trường hợp của các vấn đề này hãy thử kịch bản phía máy chủ để khắc phục vấn đề này. Mailto đôi khi hoạt động rất bất thường

+1

Câu trả lời có vẻ tương tự như những người khác đã được đăng và không phải là rất hữu ích. Bạn có thêm chi tiết để thêm không? – VKen

-1

Tôi biết câu hỏi này là cũ, nhưng tôi đã có một vấn đề tương tự, đạt đến giới hạn khi tôi cần gửi email cho nhiều người nhận.

Tôi đã xem qua solution này, nhưng tôi không hiểu tại sao nó hoạt động, tôi để nó ở đây anyway

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); 
    } 
} 

sử dụng:

var emails = '[email protected];[email protected];[email protected]'; 
sendEmails(emails); 
+1

Nó hoạt động bằng cách chia nhỏ các email được liệt kê trong 'mailto' nếu url quá lớn và gọi' mailto' theo cách thủ công cho mỗi bộ email được cắt lát. Điều này chỉ hoạt động nếu có quá nhiều email (như trái ngược với một cơ thể lớn được hỏi trong các câu hỏi gốc) và nó tạo ra nhiều bản nháp email trong ứng dụng thư khách. – HyderA

+0

không thể mở rộng để làm việc trên cơ thể thư? – Omid

+0

Không, nó sẽ tạo nhiều email với các bộ phận cơ thể. – HyderA

Các vấn đề liên quan