C# में ईमेल अटैचमेंट और एम्बेडेड ऑब्जेक्ट्स को प्रबंधित करें

ईमेल अटैचमेंट प्रबंधित करें

ईमेल अटैचमेंट एक फ़ाइल है जो ईमेल संदेश के साथ भेजी जाती है। फ़ाइल को अलग संदेश के रूप में भी भेजा जा सकता है और उसी संदेश के हिस्से के रूप में भी जिसमें यह संलग्न है। Attachment क्लास का उपयोग किया जाता है MailMessage क्लास। सभी संदेशों में बॉडी शामिल होती है। बॉडी के अलावा, आप अतिरिक्त फ़ाइलें भेजना चाह सकते हैं। इन्हें अटैचमेंट के रूप में भेजा जाता है और यह इस की एक इंस्टैंस के रूप में दर्शाया जाता है। Attachment क्लास। आप किसी भी संख्या में अटैचमेंट भेज सकते हैं लेकिन अटैचमेंट का आकार मेल सर्वर द्वारा सीमित है। उदाहरण के लिए, Gmail 10MB से बड़े फाइल आकार का समर्थन नहीं करता।

अटैचमेंट जोड़ें

ईमेल में अटैचमेंट जोड़ने के लिए, कृपया निम्न चरणों का पालन करें:

  1. का एक इंस्टेंस बनाएं MailMessage क्लास।
  2. का एक इंस्टेंस बनाएं Attachment क्लास।
  3. अटैचमेंट को लोड करें Attachment इंस्टैंस।
  4. जोड़ें Attachment इंस्टेंस को MailMessage इंस्टैंस।

निम्न कोड स्निपेट दिखाता है कि ईमेल में अटैचमेंट कैसे जोड़ें।

// Create an instance of MailMessage class
var eml = new MailMessage
{
    From = "sender@from.com",
    To = "receiver@to.com",
    Subject = "This is message",
    Body = "This is body"
};

// Load an attachment
var attachment = new Attachment("1.txt");

// Add Multiple Attachment in instance of MailMessage class and Save message to disk
eml.Attachments.Add(attachment);

eml.AddAttachment(new Attachment("1.jpg"));
eml.AddAttachment(new Attachment("1.doc"));
eml.AddAttachment(new Attachment("1.rar"));
eml.AddAttachment(new Attachment("1.pdf"));
eml.Save("AddAttachments.eml");

ऊपर हमने Aspose.Email के साथ आपके ईमेल संदेश में अटैचमेंट जोड़ने का विवरण दिया था। आगे दिखाया गया है कि अटैचमेंट कैसे हटाएँ और उनकी जानकारी स्क्रीन पर कैसे दिखाएँ।

रेफ़रेंस अटैचमेंट जोड़ें

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

निम्नलिखित कोड स्निपेट दिखाता है कि कैसे एक ईमेल में रेफ़रेंस अटैचमेंट जोड़ें। कोड निम्नलिखित चरणों को निष्पादित करता है:

  1. ईमेल संदेश फ़ाइल को उपयोग करके लोड करता है। MailMessage.Load() विधि।
  2. refAttach नामक एक नया ReferenceAttachment ऑब्जेक्ट बनाता है, संलग्नक URL "https://[attach_uri]" को उसके कंस्ट्रक्टर में पैरामीटर के रूप में पास करता है।
  3. संलग्नक का नाम "Document.docx" सेट करता है, का उपयोग करके Name refAttach ऑब्जेक्ट की प्रॉपर्टी।
  4. अटैचमेंट का प्रोवाइडर प्रकार सेट करता है AttachmentProviderType.OneDrivePro के उपयोग से ProviderType refAttach ऑब्जेक्ट की प्रॉपर्टी।
  5. अटैचमेंट की अनुमति प्रकार सेट करता है AttachmentPermissionType.AnyoneCanEdit के उपयोग से PermissionType refAttach ऑब्जेक्ट की प्रॉपर्टी।
  6. refAttach ऑब्जेक्ट को जोड़ता है अटैचमेंट्स eml ऑब्जेक्ट का संग्रह उपयोग करके Add() विधि।
var eml = MailMessage.Load("fileName");

var refAttach = new ReferenceAttachment("https://[attach_uri]")
{
    Name = "Document.docx",
    ProviderType = AttachmentProviderType.OneDrivePro,
    PermissionType = AttachmentPermissionType.AnyoneCanEdit
};

eml.Attachments.Add(refAttach);

अटैचमेंट हटाएँ

अटैचमेंट हटाने के लिए नीचे दिए गए चरणों का पालन करें:

  • का एक इंस्टेंस बनाएं Attachment क्लास।
  • इंस्टेंस में अटैचमेंट लोड करें Attachment क्लास।
  • इंस्टेंस में अटैचमेंट जोड़ें MailMessage क्लास।
  • इंस्टेंस से अटैचमेंट्स हटाएँ Attachment क्लास का उपयोग करके MailMessage क्लास इंस्टेंस।

निम्न कोड स्निपेट दिखाता है कि अटैचमेंट को कैसे हटाएँ।

// Create an instance of MailMessage class
var eml = new MailMessage {From = "sender@sender.com", To = "receiver@gmail.com"};

// Load an attachment
var attachment = new Attachment("1.txt");
eml.Attachments.Add(attachment);

// Remove attachment from your MailMessage
eml.Attachments.Remove(attachment);

अटैचमेंट फ़ाइल नाम प्रदर्शित करें

अटैचमेंट फ़ाइल नाम प्रदर्शित करने के लिए, इन चरणों का पालन करें:

  1. ईमेल संदेश में अटैचमेंट पर लूप करें और प्रत्येक अटैचमेंट को सहेजें।
  2. प्रत्येक अटैचमेंट का नाम स्क्रीन पर दिखाएँ।

निम्न कोड स्निपेट दिखाता है कि अटैचमेंट फ़ाइल नाम स्क्रीन पर कैसे दिखाएँ।

var eml = MailMessage.Load("Attachments.eml");

foreach (var attachment in eml.Attachments)
{
    // Display the the attachment file name
    Console.WriteLine(attachment.Name);
}

ईमेल अटैचमेंट निकाले

यह विषय ईमेल फ़ाइल से अटैचमेंट निकालने के बारे में बताता है। ईमेल अटैचमेंट वह फ़ाइल है जो ईमेल संदेश के साथ भेजी जाती है। यह फ़ाइल अलग संदेश के रूप में या उस संदेश का हिस्सा के रूप में भेजी जा सकती है जिससे यह संलग्न है। सभी ईमेल संदेश अतिरिक्त फ़ाइलें भेजने का विकल्प रखते हैं। ये अटैचमेंट के रूप में भेजी जाती हैं और इस क्लास की इंस्टेंस के रूप में प्रदर्शित होती हैं। Attachment class। यह Attachment क्लास का उपयोग किया जाता है MailMessage क्लास जो अटैचमेंट्स के साथ काम करती है। ईमेल संदेश से अटैचमेंट्स निकालने के लिए इन चरणों का पालन करें:

  • का एक इंस्टेंस बनाएं MailMessage क्लास।
  • ईमेल फ़ाइल को इसमें लोड करें। MailMessage इंस्टैंस।
  • का एक इंस्टेंस बनाएं Attachment क्लास और इसे लूप में उपयोग करके सभी अटैचमेंट्स को निकालें।
  • संलग्नक को सहेजें और स्क्रीन पर दिखाएँ।

|ईमेल में निकाले गए अटैचमेंट्स| | :- | |todo:image_alt_text| निम्नलिखित कोड स्निपेट दिखाता है कि कैसे ईमेल अटैचमेंट निकाले जाएँ।

var eml = MailMessage.Load("Message.eml", new MsgLoadOptions());

foreach (var attachment in eml.Attachments)
{
    attachment.Save("MessageEmbedded_out.eml");
    Console.WriteLine(attachment.Name);
}

अटैचमेंट से Content-Description प्राप्त करें

Aspose.Email API अटैचमेंट हेडर से अटैचमेंट का Content-Description पढ़ने की क्षमता प्रदान करता है। निम्नलिखित कोड स्निपेट दिखाता है कि कैसे अटैचमेंट से कंटेंट विवरण प्राप्त किया जाए।

var eml = MailMessage.Load("EmailWithAttachEmbedded.eml");
Console.WriteLine(eml.Attachments[0].Headers["Content-Description"]);

एम्बेडेड संदेशों की पहचान करें

निम्न कोड स्निपेट दर्शाता है कि अटैचमेंट एक एम्बेडेड संदेश है या नहीं।

var eml = MailMessage.Load("EmailWithAttachEmbedded.eml");

Console.WriteLine(eml.Attachments[0].IsEmbeddedMessage
    ? "Attachment is an embedded message."
    : "Attachment isn't an embedded message.");

हस्ताक्षरित ईमेल से अटैचमेंट प्राप्त करें

साइन किए गए ईमेल में एकल smime.p7m अटैचमेंट होता है। इसका मतलब है कि ईमेल SMIME द्वारा एन्क्रिप्टेड है। Smime.p7m फ़ाइल फ़ॉर्मेट डिजिटल सिग्नेचर है। इस ईमेल की सामग्री देखने के लिए उपयोग करें RemoveSignature मेथड। मेथड एक … लौटाता है MailMessage ऑब्जेक्ट बिना डिजिटल सिग्नेचर के।

var signedEml = MailMessage.Load("signed.eml");
        
if (signedEml.IsSigned)
{
    for (var i = 0; i < signedEml.Attachments.Count; i++)
    {
        Console.WriteLine($@"Signed email attachment{i}: {signedEml.Attachments[i].Name}");
    }
    
    // The email is signed. Remove a signature.
    var eml = signedEml.RemoveSignature();
    
    Console.WriteLine(@"Signature removed.");

    for (var i = 0; i < eml.Attachments.Count; i++)
    {
        Console.WriteLine($@"Email attachment{i}: {eml.Attachments[i].Name}");
    }
}

इनलाइन इमेज़ संभालना

ईमेल बॉडी में इनलाइन इमेज जोड़ें

यह LinkedResource क्लास का उपयोग किया जाता है MailMessage क्लास जो आपके ईमेल संदेश में ऑब्जेक्ट एम्बेड करने के लिए है। एम्बेडेड ऑब्जेक्ट जोड़ने के लिए, इन चरणों का पालन करें

  1. का एक इंस्टेंस बनाएं MailMessage क्लास।
  2. प्रेषक, प्राप्तकर्ता और विषय मान यहाँ निर्दिष्ट करें MailMessage इंस्टैंस।
  3. का एक इंस्टेंस बनाएं AlternateView क्लास।
  4. का एक इंस्टेंस बनाएं LinkedResource क्लास।
  5. एक एम्बेडेड ऑब्जेक्ट को लोड करें LinkedResourceCollection.
  6. लोड किए गए एम्बेडेड ऑब्जेक्ट को जोड़ें MailMessage क्लास इंस्टेंस।
  7. जोड़ें AlternateView इंस्टेंस को MailMessage क्लास इंस्टेंस।

नीचे दिए गए कोड स्निपेट्स एक ईमेल संदेश बनाते हैं जिसमें साधारण टेक्स्ट और HTML बॉडी दोनों होते हैं और HTML में एक चित्र एम्बेड किया गया है।

|ईमेल में एम्बेडेड चित्र| | :- | |todo:image_alt_text| आप किसी भी संख्या में एम्बेडेड ऑब्जेक्ट भेज सकते हैं। संलग्नक का आकार मेल सर्वर द्वारा सीमित है। उदाहरण के लिए, Gmail 10MB से बड़े फ़ाइल आकार को सपोर्ट नहीं करता। नीचे दिया गया कोड स्निपेट दिखाता है कि ईमेल में ऑब्जेक्ट्स को कैसे एम्बेड किया जाए।

var eml = new MailMessage
{
    From = "AndrewIrwin@from.com",
    To = "SusanMarc@to.com",
    Subject = "This is an email"
};

// Create the plain text part It is viewable by those clients that don't support HTML
var plainView =
    AlternateView.CreateAlternateViewFromString("This is my plain text content", null, "text/plain");

// Create the HTML part.To embed images, we need to use the prefix 'cid' in the img src value.
// The cid value will map to the Content-Id of a Linked resource. Thus <img src='cid:barcode'>
// will map to a LinkedResource with a ContentId of 'barcode'.
var htmlView =
    AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:barcode>", null,
        "text/html");

// Create the LinkedResource (embedded image) and Add the LinkedResource to the appropriate view
var barcode = new LinkedResource("1.jpg", MediaTypeNames.Image.Jpeg)
{
    ContentId = "barcode"
};

eml.LinkedResources.Add(barcode);
eml.AlternateViews.Add(plainView);
eml.AlternateViews.Add(htmlView);

eml.Save("EmbeddedImage_out.msg", SaveOptions.DefaultMsgUnicode);

ईमेल बॉडी से इनलाइन इमेज हटाएँ

LinkedResourceCollection के द्वारा एक्सेस किया जाता है MailMessage.LinkedResources प्रॉपर्टी। यह LinkedResourceCollection कलेक्शन एक विधि प्रदान करता है जिससे ईमेल संदेश में जोड़े गए एम्बेडेड ऑब्जेक्ट्स को पूरी तरह हटाया जा सकता है। इसका ओवरलोडेड संस्करण उपयोग करें LinkedResourceCollection.RemoveAt ईमेल संदेश से एम्बेडेड ऑब्जेक्ट के सभी निशानों को हटाने की विधि।

नीचे दिया गया नमूना कोड दिखाता है कि ईमेल संदेश से एम्बेडेड ऑब्जेक्ट्स को कैसे हटाया जाए।

//Load the test message with Linked Resources
var eml = MailMessage.Load("EmlWithLinkedResources.eml");

//Remove a LinkedResource
eml.LinkedResources.RemoveAt(0, true);

//Now clear the Alternate View for linked Resources
eml.AlternateViews[0].LinkedResources.Clear(true);

एम्बेडेड ऑब्जेक्ट्स संभालना

एक एम्बेडेड ऑब्जेक्ट वह वस्तु है जो एक एप्लिकेशन द्वारा बनाई गई है और दूसरे एप्लिकेशन द्वारा बनाये गए दस्तावेज़ या फ़ाइल में संलग्न होती है। उदाहरण के लिए, Microsoft Excel स्प्रेडशीट को Microsoft Word रिपोर्ट में एम्बेड किया जा सकता है, या एक वीडियो फ़ाइल को Microsoft PowerPoint प्रस्तुति में एम्बेड किया जा सकता है। जब कोई फ़ाइल एम्बेड की जाती है, तो वह किसी अन्य दस्तावेज़ में डालने या पेस्ट करने की बजाय अपना मूल फ़ॉर्मेट बनाए रखती है। एम्बेडेड दस्तावेज़ को मूल एप्लिकेशन में खोलकर संशोधित किया जा सकता है।

एम्बेडेड ऑब्जेक्ट निकाले

यह विषय ईमेल फ़ाइल से एम्बेडेड ऑब्जेक्ट निकालने के तरीके को समझाता है। एम्बेडेड दस्तावेज़ मूल एप्लिकेशन में खुल सकता है और संशोधित किया जा सकता है। ईमेल संदेश से एम्बेडेड ऑब्जेक्ट निकालने के लिए, इन चरणों का पालन करें:

  1. का एक इंस्टेंस बनाएं MailMessage क्लास।
  2. ईमेल फ़ाइल को लोड करें। MailMessage इंस्टैंस।
  3. एक लूप बनाएँ और क्लास की एक इंस्टेंस बनाएँ। Attachment उसमें क्लास।
  4. संलग्नक को सहेजें और स्क्रीन पर दिखाएँ।
  5. प्रेषक और प्राप्तकर्ता पते को निर्दिष्ट करें MailMessage इंस्टैंस।
  6. इसका उपयोग करके ईमेल भेजें SmtpClient क्लास।

नीचे दिया गया कोड स्निपेट ईमेल से एम्बेडेड ऑब्जेक्ट्स निकालता है।

|ईमेल में निकाले गए एम्बेडेड ऑब्जेक्ट्स| | :- | |todo:image_alt_text| नीचे दिया गया कोड स्निपेट दिखाता है कि एम्बेडेड ऑब्जेक्ट्स कैसे निकालें।

var eml = MailMessage.Load("Message.msg", new MsgLoadOptions());

foreach (var attachment in eml.Attachments)
{
    attachment.Save("MessageEmbedded_out.msg");
    Console.WriteLine(attachment.Name);
}

HTML ईमेल में लिंक्ड इमेज निकालें

HTML बॉडी से लिंक्ड इमेज रिसोर्स को बाहरी रूप में निकालें और Aspose.Email for .NET के साथ HTML आउटपुट में एम्बेड करें। सेट HtmlSaveOptions.ExtractHTMLBodyResourcesAsAttachments True सेट करने पर, HTML बॉडी में लिंक्ड इमेज और अन्य संसाधन निकाल लिये जाएंगे और एम्बेड किए जायेंगे। यह लिंक्ड कंटेंट वाले संदेशों की मूल उपस्थिति को संरक्षित करने में मदद करता है। निम्नलिखित कोड उदाहरण दिखाता है कि कैसे एक ईमेल संदेश लोड किया जाए, उसके बाहरी HTML संसाधनों को अटैचमेंट के रूप में निकाला जाए, वैकल्पिक रूप से रेंडरिंग इवेंट्स को संभाला जाए, और फिर Aspose.Email for .NET का उपयोग करके संदेश को HTML फ़ाइल के रूप में सहेजा जाए।

// Load the email message
var mailMessage = MailMessage.Load("input.eml");

// Set options to extract external HTML resources
var options = new HtmlSaveOptions();
options.ExtractHTMLBodyResourcesAsAttachments = true;

// Optional: Handle resource rendering events
options.ResourceHtmlRendering += (sender, e) =>
{
    Console.WriteLine(e.PathToResourceFile + " " + ((Attachment)sender).ContentId);
};

// Save the HTML representation of the email
mailMessage.Save("output.html", options);