2013-08-29 2 views
6

हमने System.Web.Helpers.Webmail.Send से पहले स्टैक ओवरव्लो पर कुछ समान प्रश्न देखे हैं लेकिन मुझे क्या हो रहा है इसके बारे में कोई उचित स्पष्टीकरण नहीं दिख रहा है।वेबमेल के साथ क्या गलत है। जब कई प्राप्तकर्ताओं की बात आती है तो भेजें?

to: पैरामीटर के बारे में, the documentation का कहना है:

प्राप्तकर्ता या प्राप्तकर्ताओं का ईमेल पता। अर्धविराम (;) का उपयोग कर अलग-अलग एकाधिक प्राप्तकर्ता।

और मैं जवाब "use a comma because the docs are wrong" कहा, या "अर्धविराम का उपयोग करें" देखा है, या "maybe it's an environment issue"

कोड

WebMail.Send(
    to: "[email protected],[email protected]", 
    from: "[email protected]", 
    subject: "Some Automated Email", 
    body: "<strong>Lorem Ipsum</strong>", 
    isBodyHtml: true 
); 

मैं कुछ परिदृश्यों की कोशिश की है:

[email protected];[email protected]

कोई ईमेल प्राप्त: An invalid character was found in the mail header: ';'.

[email protected]; [email protected]

केवल पहले प्राप्तकर्ता ईमेल

[email protected],[email protected]

दोनों ईमेल

[email protected], [email protected]

दोनों ईमेल प्राप्त प्राप्त प्राप्त करता

[email protected], [email protected]

पहले ईमेल प्राप्त है, लेकिन न आया हुआ अपवाद: Mailbox unavailable. The server response was: 5.7.1 Unable to relay

[email protected], [email protected]

कोई ईमेल प्राप्त: An invalid character was found in the mail header: ','.

किसी को भी इस पर कुछ प्रकाश डाला सकता है? मैंने वास्तव में एक अलग सर्वर पर और भी अधिक विचित्र व्यवहार किया है; मैं उपर्युक्त परीक्षणों के लिए एक्सचेंज का उपयोग कर रहा हूं, लेकिन वास्तव में HMailServer पर विभिन्न व्यवहार का अनुभव किया जहां [email protected],[email protected] परिणामस्वरूप कोई सर्वर त्रुटियों के साथ एक चुप विफलता और HMailServer लॉग में कोई आउटगोइंग मेल नहीं हुआ। HMailServer के साथ सिस्टम पर मुझे केवल एक ही पते के साथ सफलता मिली है।

उत्तर

2

शायद आपको उन रिले के विभिन्न प्रकारों से निपटना है, जिन्हें आप कनेक्ट कर रहे हैं, और वे विभिन्न विधियों को स्वीकार करते हैं। न केवल डिलीमीटर वर्ण प्रत्येक विशिष्ट मेल सर्वर के लिए महत्वपूर्ण हैं, लेकिन ई-मेल पते भी करते हैं (चूंकि अलग-अलग रिले कुछ ई-मेल स्वीकार करने के लिए कॉन्फ़िगर किए जाएंगे, और खराब ई-मेल के लिए कई प्रकार के त्रुटि कोड फेंक देंगे, जो बदले में कई अपवाद फेंक देगा)।

सिस्टम.Net.मेल नामस्थान में एक मेल मैसेज ऑब्जेक्ट है जिसमें मेल, एड्रेस कोलेक्शन ऑब्जेक्ट्स टू टू, सीसी, और बीसीसी के लिए शामिल है जिसे आप प्रत्येक प्राप्तकर्ता के लिए केवल ऐड() पर कॉल कर सकते हैं।

मेरे पास library है जो मेल (बिना रिले के) भेजता है जो इसका उपयोग करता है (सबकुछ बीसीसी में जाता है), आप वहां कोड को देख सकते हैं। यदि आप लाइब्रेरी का उपयोग करना चाहते हैं, तो अपने आईपी पते को अच्छी प्रतिष्ठा में रखना सुनिश्चित करें और सुनिश्चित करें कि आपके DNS रिकॉर्ड्स उसी तरह से सेटअप हैं जैसे आप रिले (पीटीआर और ए सभी रिकॉर्ड रिकॉर्ड करते हैं)।

1

जैसा कि मैं इसे समझता हूं, दस्तावेज़ीकरण में गलती संभावित परिदृश्य है। मेरे पास यह असेंबली नहीं है, इसलिए मैं ILSpy में इसकी पुष्टि नहीं कर सकता, लेकिन स्पष्ट रूप से सहायक वर्ग केवल System.Net.Mail का उपयोग करता है। चार पैरामीटर अधिभार के बाद मैं इस आंतरिक विधि को प्राप्त करता हूं।

internal Message(string from, string to) : this() 
{ 
    //... 
    this.to = new MailAddressCollection 
    { 
     to 
    } 
} 

नतीजतन, यह बस एक नया MailAddressCollection जो एक comma सीमांकक आवश्यकता है बनाता है। to स्ट्रिंग कभी भी अर्द्ध-कोलन को प्रतिस्थापित या कुशलतापूर्वक नहीं रखती है (जब तक यह Helper कक्षा में नहीं किया जाता है लेकिन यह मामला प्रतीत नहीं होता है)।

संबंधित मुद्दे