2012-01-19 6 views
5

में भेजने इस तरह मैं वर्तमान में एक तालिका बनाने रहा हूँ और एक ईमेल में भेजने के लिए। मैं क्या करना चाहता हूं कि एक टेबल बनाने और इसे ईमेल में टेक्स्ट के रूप में भेजने के बजाय मैं एक सीएसवी फ़ाइल बनाना चाहता हूं और इसे इस ईमेल से जोड़ना चाहता हूं और फिर इसे भेजना चाहता हूं। क्या कोई मुझे यह दिखाने में मदद कर सकता है कि यह कैसे किया जा सकता है? धन्यवादकैसे एक csv बना सकते हैं और ईमेल से संलग्न और #

using (MemoryStream stream = new MemoryStream(Encoding.ASCII.GetBytes(csv))) 
    { 
     try 
     { 
      string to = ""; 
      string from = ""; 
      string subject = "Order"; 
      string body = sb.ToString(); 
      SmtpClient SMTPServer = new SmtpClient("127.0.0.1"); 
      MailMessage mailObj = new MailMessage(from, to, subject, body); 
      mailObj.Attachments.Add(new Attachment(stream, new ContentType("text/csv"))); 
      mailObj.IsBodyHtml = true; 
      SMTPServer.Send(mailObj); 
     } 
     catch (Exception ex) 
     { return "{\"Error\":\"Not Sent\"}"; } 
    } 
+0

आप पहले से ही CSV फ़ाइल है या आप SQL डेटा से यह उत्पन्न करना चाहते हैं? –

+0

मैं एसक्यूएल डेटा – Beginner

+1

से नया निर्माण करना चाहता हूं क्या आप हमसे कोड लिखने के लिए कह रहे हैं? यह साइट के लिए यह नहीं है। अगर आपको उस कोड को लिखते समय कुछ समस्या आती है, तो आपको इसके बारे में पूछना चाहिए। – svick

उत्तर

14

एक बार जब आप CSV फ़ाइल जेनरेट कर लेते हैं, तो आपको इसे स्ट्रीम में लिखना होगा। इसके बाद आप निम्न कोड के साथ लगाव जोड़ सकते हैं:

//Stream containing your CSV (convert it into bytes, using the encoding of your choice) 
using (MemoryStream stream = new MemoryStream(Encoding.ASCII.GetBytes(csv))) 
{ 
    //Add a new attachment to the E-mail message, using the correct MIME type 
    Attachment attachment = new Attachment(stream, new ContentType("text/csv")); 
    attachment.Name = "test.csv"; 
    mailObj.Attachments.Add(attachment); 

    //Send your message 
    try 
    { 
    using(SmtpClient client = new SmtpClient([host]){Credentials = [credentials]}) 
    { 
     client.Send(mailObj); 
    } 
    } 
    catch 
    { 
    return "{\"Error\":\"Not Sent\"}"; 
    } 
} 

संदर्भ System.Net.Mail.Attachment के लिए वर्ग

+1

@Beginner क्षमा याचना, मैं अपने कोड में संशोधन किया है - अपनी CSV के बाइट्स के साथ स्मृति धारा आरंभ –

+1

, अनुलग्नक ऑब्जेक्ट का नाम संपत्ति initialising ऊपर '{नाम =" data.csv "} मेरी कोड में के रूप में की कोशिश करो' –

+1

आप सुनिश्चित हैं आप मेरे कोड का सही इस्तेमाल कर रहे हैं? मेरा संकलन और सही ढंग से कार्य करता है, एक CSV फ़ाइल –

0

आप एक अस्थायी फ़ाइल (CSV फ़ाइल) बनाने के लिए पहला दिखना चाहिए तो आप अपने MailMessage से लगाव जोड़ सकते हैं।

अस्थायी फ़ाइल बनाने के लिए, ये लिंक देख सकते हैं:
How to create a temporary file (for writing to) in C#?
Creating temporary folders

+0

क्यों आप पहली बार अस्थायी फ़ाइल बनाने की सिफारिश करते हैं? मेरे लिए यह जटिलता और चीजें जोड़ता है जो गलत हो सकते हैं। इसे सीधे स्ट्रीम से करना बेहतर लगता है। लेकिन अगर फायदे हैं तो मैं इसे एक सवाल के रूप में पूछ रहा हूं। – Carl

+1

यदि आप एक ही प्रक्रिया में पढ़ा (सीएसवी) और भेज (मेल) कर रहे हैं, तो एक स्ट्रीम निश्चित रूप से एक बेहतर समाधान है। यह भी ध्यान रखें कि प्रश्न के बाद से सवाल संपादित किया गया है। –

+0

आह। मुझे एहसास नहीं हुआ कि सवाल संपादित किया गया था। – Carl

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