2010-10-19 13 views
5

मेरे पास एक कंसोल एप्लिकेशन है जिसके लिए मुझे ई-मेल भेजने की आवश्यकता है। अभी मैं ई-मेल बनाने के लिए एक स्ट्रिंग बिल्डर का उपयोग करता हूं, लेकिन मैं और अधिक फैंसी प्राप्त करना चाहता हूं। फिर यह मेरे सामने आया: मेरी ऑब्जेक्ट को एएसपी.नेट एमवीसी स्टाइल व्यू पर भेजना अच्छा लगेगा, जहां मेरे पास HTML मार्कअप होगा, और उसके बाद इसे मेल आउट करने के लिए वापस कर दें। अभी, मैं इसे के रूप में जाना है;कंसोल एप्लिकेशन में एएसपी.नेट एमवीसी स्टाइल व्यू बनाना?

private void MailJobList(List<Job> newJobs) { 
       var body = new System.Text.StringBuilder(); 
       var from = new MailAddress("[email protected]"); 
       var to = new MailAddress(addresslist.Get()); 

       var message = new MailMessage(from, to); 

       message.Subject = "New job list"; 

    //mail settings ommitted here for brevity 

       body.Append("New jobs: "); 
       if (newJobs.Any()) { 
        foreach (var newJob in newJobs) { 
         body.Append(newJob.Job + ", "); 
        } 
       } 

       message.Body = body.ToString(); 

       client.Send(message); 
} 

जाहिर है कि सिर्फ सादा पाठ है, लेकिन मैं वास्तव में की तरह कुछ करने में सक्षम होना चाहते हैं:

var body = RenderHTMLMessage(newJobs); 

ऐसा लगता है जैसे मैं लाभ उठाने के लिए ASP.NET MVC के दृष्टिकोण इंजन में सक्षम होना चाहिए (या स्पार्क या कोई अन्य व्यू इंजन) और अपना खुद का रोल नहीं। अगर मैं यहां चिह्नित हूं या ऐसा करने का कोई आसान तरीका है, तो मैं सुझावों के लिए खुला हूं।

+0

यह एक संबंधित (और बहुत समान) प्रश्न प्रतीत होता है: http://stackoverflow.com/questions/1730134/asp-net-mvc-email। – R0MANARMY

उत्तर

3

आप एक general purpose templating engine रूप Spark View Engine उपयोग कर सकते हैं। स्पार्क के निर्माता ने ब्लॉगपॉस्ट लिखा कि यह करने के बारे में कैसे जाना है (एक अच्छी शुरुआत होगी)।

+0

धन्यवाद, मुझे विश्वास नहीं है कि मुझे याद आया। स्पार्क की तुलना में स्पार्क 100% आसान दिखता है और स्टैंडअलोन टेम्पलेटिंग समाधान के रूप में उपयोग करता है। यह भविष्य में बदल सकता है लेकिन यह निश्चित रूप से अधिक परिपक्व है। –

0

समस्या यह है कि एएसपी.नेट एमवीसी एएसपी.नेट पर भारी निर्भर करता है, और एएसपी.नेट एक वेबसर्वर पर निर्भर करता है .. मुझे नहीं लगता कि यह वही तरीका है जिस तरह से आप चाहते हैं। आप क्या कर सकते हैं एएसपी.नेट स्वयं को होस्ट करना, और खुद के लिए नकली अनुरोध।

4

तुम एक सांत्वना अनुप्रयोग में निम्न ब्लॉग पोस्ट नई Razor दृश्य इंजन का उपयोग कर सकते हैं, देखें:

http://thegsharp.wordpress.com/2010/07/07/using-razor-from-a-console-application/

+1

यह अच्छा है - और इसके लिए एमवीसी 3/रेजर के बाद के संस्करणों में इसके लिए अधिक देशी समर्थन होना चाहिए। – bkaid

+0

एक अन्य कार्यान्वयन: http://buildstarted.com/2010/11/02/razor-without-mvc-part-ii/ – Stuart

2

आप T4 templates है, जो एक वाक्य रचना asp.net के समान उपयोग कर सकते हैं, यह करने के लिए । इसके लिए टी 4 संस्करण की आवश्यकता है जो वीएस -2010 के साथ जहाज है। Here एक उदाहरण है, और here विषय

0

पर msdn है इस कार्य के लिए एमवीसी आधारभूत संरचना बहुत भारी होगी। जब तक आप पृष्ठों को बनाने के लिए एक एमवीसी अनुप्रयोग लिखते/होस्ट नहीं करते हैं, तो ईमेल करने से पहले यूआरएल से सीधे एचटीएमएल पढ़ें (इसका मतलब यह भी हो सकता है कि (ब्राउजर में इसे देखें) लिंक पहले से ही बनाया गया है (अगर इसे न्यूलेटर्स के लिए इस्तेमाल किया जा रहा है।

विशिष्ट ईमेल के लिए, एचटीएमएल टेम्पलेट फाइलें बनाएं जिनमें सभी एचटीएमएल (और ईमेल द्वारा आवश्यक इनलाइन शैलियों) शामिल हों, फिर एचटीएमएल में पढ़ता है और टोकन को प्रतिस्थापित करता है जैसे ## TO_NAME ## आदि टोकन या सूचियां (पंक्तियों को लिखित) सुंदर होगी वैसे भी हर एक के लिए विशिष्ट कोड।

इसका मतलब है आप ईमेल टेम्पलेट में से टोकन नहीं निकाल कर कोड और ommit सामग्री के लिए separatly ईमेल टेम्पलेट्स बदल सकते हैं।

उदाहरण के लिए:

<html> 
<body style="font-size:10px"> 
Dear ##To_NAME##< /br> 
</br> 
Your Jobs< /br> 
    <table> 
     <tr> 
     <td colspan="2">New Jobs<td> 
     </tr> 
     ##JOB_LIST## 
    <table> 
    ##FROM_NAME## 
</body> 
</html> 
+0

इस दृष्टिकोण का मुख्य नकारात्मक पक्ष यह है कि व्यू इंजनों में पहले से ही अवधारणाएं होती हैं जैसे लूपिंग और सशर्त सिंटैक्स में पके हुए । इसलिए आप जॉब लिस्टिंग का प्रतिनिधित्व करने वाले सीएलआर ऑब्जेक्ट्स की एक सूची सूची में "बाध्य" कर सकते हैं और आपके विचार में निर्दिष्ट करने के लिए मार्कअप निर्दिष्ट करें।आपका दृष्टिकोण ऐसा लगता है कि इसे कोड में कुछ HTML मार्कअप उत्पन्न करने की आवश्यकता होगी जो ईमेल के लेआउट और डेटा के साथ पॉप्युलेट करने के लिए उपयोग किए जाने वाले कोड के बीच काफी मजबूत युग्मन बनाता है। – R0MANARMY

+0

हां, इसे कुछ एचटीएमएल की पीढ़ी की आवश्यकता होती है, यह ओपी अब क्या कर रहा है इसका एक बेहतर संस्करण है। –

0

डॉटलिक्विड (www.dotliquidmarkup.org) को आज़माएं। यह एक टेम्पलेटिंग इंजन है जिसे एक आसान वाक्यविन्यास के साथ हर तरह के एप्लिकेशन में उपयोग किया जा सकता है।

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