में ईमेल करने के लिए ऑटो जेनरेटेड पीडीएफ संलग्न करना मेरे पास एक बहुत ही विशिष्ट आवश्यकता है। मेरे वेब ऐप में, मुझे डेटाबेस मानों और एक ईमेल बॉडी से पीडीएफ चालान उत्पन्न करना होगा। मैं आसानी से एसएमटीपी का उपयोग करके इसे भेज सकता हूं जो सही काम करता है।एएसपीनेट ऐप
लेकिन समस्या यह है कि हम हमेशा सही होने के लिए सिस्टम पर भरोसा नहीं कर सकते हैं, और यह एक चालान है। इसलिए, हमें SMTP का उपयोग करने के बजाय डिफ़ॉल्ट मेल क्लाइंट खोलने की आवश्यकता है। अभी, मेरे पास निम्नलिखित कोड
//Code to create the script for email
string emailJS = "";
emailJS += "window.open('mailto:[email protected]?body=Test Mail" + "&attachment=" + emailAttachment + "');";
//Register the script for post back
ClientScript.RegisterStartupScript(this.GetType(), "mailTo", emailJS, true);
यह ईमेल को पूरी तरह से खोलता है, लेकिन कोई अनुलग्नक काम नहीं कर रहा है। पथ /Web/Temp/123.pdf
होना चाहिए।
यदि मैं नीचे की तरह सामान्य यूआरएल के समान पथ का उपयोग करता हूं, तो यह फ़ाइल को नई विंडो में ठीक से खोलता है।
ClientScript.RegisterStartupScript(this.GetType(), "newWindow", "window.open('/Web/Temp/123.pdf');", true);
तो, स्पष्ट रूप से फ़ाइल मौजूद है, लेकिन यह सर्वर पर मौजूद है। दूसरी ओर आउटलुक क्लाइंट मशीन पर खुलता है। इसलिए, मैं C:\Web\Temp\123.pdf
जैसे पूर्ण निर्धारित पथ का उपयोग नहीं कर सकता। यदि मैं कोशिश करता हूं, तो यह क्लाइंट मशीन पर फ़ाइल ढूंढने का प्रयास करेगा, जहां फ़ोल्डर स्वयं मौजूद नहीं हो सकता है।
मैं यह पता लगाने की कोशिश कर रहा हूं कि मैं यहां क्या कर सकता हूं। अगर कोई और तरीका है तो मुझे कोशिश करनी चाहिए।
पीएस नहीं, मैं सीधे ईमेल नहीं भेज सकता। इससे मेरे लिए भविष्य में नरक बहुत अधिक समस्या होगी।
संपादित करें: मुझे एक अजीब समस्या भी मिली। अगर मैं अनुलग्नक में फ़ाइल पथ में एक डबल कोट जोड़ता हूं, तो \ स्वचालित रूप से जोड़ा जाता है। @"&attachment=""" + Server.MapPath(emailAttachment) + @"""');"
मुझे आउटपुट &attachment=\"C:\Web\Temp\123.pdf\"
के रूप में देता है।
मैं उस डबल कोट से बचने की कोशिश कर रहा हूं और किसी भी तरह से यह स्लैश जोड़ता है। मुझे पता है कि यह एक पूरी तरह से अलग समस्या है, लेकिन सोचा कि मुझे एक नया प्रश्न बनाने के बजाय यहां उल्लेख करना चाहिए।
संपादित करें: मैंने स्थानीयहोस्ट पर एक निश्चित पथ की कोशिश की। इसलिए, मैं मूल रूप से उसी मशीन पर ऐप का परीक्षण कर रहा हूं जहां फ़ाइल संग्रहीत हो रही है। अभी भी, कोई अनुलग्नक बिल्कुल नहीं।
string emailJS = "";
emailJS += @"window.open('mailto:[email protected]?body=Test Mail" + emailAttachment + @"&attachment=";
emailJS += @"""D:\Dev\CSMS\CSMSWeb\Temp\635966781817446275.Pdf""');";
//emailJS += Server.MapPath(emailAttachment) + @"');";
//Register the script for post back
ClientScript.RegisterStartupScript(this.GetType(), "mailTo", emailJS, true);
यह सुनिश्चित करने के लिए पथ अपडेट किया गया है कि यह उचित है। अब, यह command line argument not valid
कहकर त्रुटि फेंकता है।
संपादित करें:
वहाँ किसी भी अन्य विधि मैं कोशिश कर सकता है? मेरे पास सर्वर की तरफ फ़ाइल पथ है। हो सकता है कि मैं क्लाइंट मशीन पर कुछ डिफ़ॉल्ट फ़ोल्डर में फ़ाइल को स्वचालित रूप से डाउनलोड कर सकूं और वहां से खुलूं? क्या यह संभव है?
संपादित करें: मैंने एक और विकल्प की कोशिश की।
emailJS += @"mailto:[email protected]?body=Test Mail" + @"&attachment=";
emailJS += @"\\localhost\CSMSWeb\Temp\635966781817446275.Pdf";
//emailJS += Server.MapPath(emailAttachment) + @"');";
Process.Start(emailJS);
Process.Start
लाइन काम करता है लेकिन यह कुछ भी नहीं करता है। शुरू करने की कोई प्रक्रिया नहीं है, कोई त्रुटि नहीं है।
संपादित करें: याय। अंततः उपयोगकर्ता को डिफ़ॉल्ट मेल क्लाइंट खोलने के बजाय विषय और शरीर को प्रदर्शित करने के लिए एक अलग रूप का उपयोग करने के लिए स्वीकृति मिल गई। हालांकि, मैं अभी भी इस समस्या को हल करना पसंद करूंगा।
है है यह इंटरनेट एप्लिकेशन जिस पर आप काम कर रहे हैं? यदि ऐसा है, तो यह कुछ प्रतिबंधों के साथ किया जा सकता है, अन्यथा यह नहीं कर सकता है। – Andrei
हां, इंट्रानेट एप्लिकेशन। – jitendragarg