मेलमेसेज को ईएमएल डेटा युक्त स्ट्रीम में बदलने के लिए यहां एक विस्तार विधि है। यह स्पष्ट रूप से एक हैक का एक बिट है क्योंकि यह फ़ाइल सिस्टम का उपयोग करता है, लेकिन यह काम करता है।
public static void SaveMailMessage(this MailMessage msg, string filePath)
{
using (var fs = new FileStream(filePath, FileMode.Create))
{
msg.ToEMLStream(fs);
}
}
/// <summary>
/// Converts a MailMessage to an EML file stream.
/// </summary>
/// <param name="msg"></param>
/// <returns></returns>
public static void ToEMLStream(this MailMessage msg, Stream str)
{
using (var client = new SmtpClient())
{
var id = Guid.NewGuid();
var tempFolder = Path.Combine(Path.GetTempPath(), Assembly.GetExecutingAssembly().GetName().Name);
tempFolder = Path.Combine(tempFolder, "MailMessageToEMLTemp");
// create a temp folder to hold just this .eml file so that we can find it easily.
tempFolder = Path.Combine(tempFolder, id.ToString());
if (!Directory.Exists(tempFolder))
{
Directory.CreateDirectory(tempFolder);
}
client.UseDefaultCredentials = true;
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
client.PickupDirectoryLocation = tempFolder;
client.Send(msg);
// tempFolder should contain 1 eml file
var filePath = Directory.GetFiles(tempFolder).Single();
// stream out the contents
using (var fs = new FileStream(filePath, FileMode.Open))
{
fs.CopyTo(str);
}
if (Directory.Exists(tempFolder))
{
Directory.Delete(tempFolder, true);
}
}
}
फिर आप धारा thats लौटे लेने के लिए और के रूप में आप डिस्क पर किसी अन्य स्थान पर सहेजने या एक डाटाबेस क्षेत्र में भंडारण, या यहां तक कि एक अनुलग्नक के रूप ईमेल सहित इसके साथ चाहते हैं, कर सकते हैं।
मैंने पाया कि मैं भी रयान क्या प्रदान की के अलावा <नेटवर्क होस्ट = "...", आदि जोड़ने के लिए की जरूरत वीबी के लिए एक है । –
आउटपुट .eml फ़ाइल के फ़ाइल नाम को बदलने का कोई तरीका है? मैं इसे निम्न जैसा दिखाना पसंद करूंगा: f80f4695-551c-47d7-8879-40ad89707b23.eml धन्यवाद! – buzzzzjay
हालांकि एक पुरानी पोस्ट, मैं @buzzzzjay से अंतिम प्रश्न का उत्तर जोड़ना चाहता हूं: यहां एक नज़र डालें: [link] (http://www.codeproject.com/Articles/32434/Adding-Save- कार्यक्षमता- टू-माइक्रोसॉफ्ट-नेट-मेल-मा) –