अटैचमेंट और एम्बेडेड ऑब्जेक्ट्स के साथ कार्य करना
ईमेल अटैचमेंट प्रबंधन
ईमेल अटैचमेंट एक फ़ाइल है जो ईमेल संदेश के साथ भेजी जाती है। फ़ाइल को अलग संदेश के रूप में भी भेजा जा सकता है और उसी संदेश के हिस्से के रूप में भी जिसमें यह संलग्न है। Attachment क्लास का उपयोग किया जाता है MailMessage क्लास। सभी संदेशों में बॉडी शामिल होती है। बॉडी के अलावा, आप अतिरिक्त फ़ाइलें भेजना चाह सकते हैं। इन्हें अटैचमेंट के रूप में भेजा जाता है और यह इस की एक इंस्टैंस के रूप में दर्शाया जाता है। Attachment क्लास। आप किसी भी संख्या में अटैचमेंट भेज सकते हैं लेकिन अटैचमेंट का आकार मेल सर्वर द्वारा सीमित है। उदाहरण के लिए, Gmail 10MB से बड़े फाइल आकार का समर्थन नहीं करता।
Try it out!
फ़्री के साथ ऑनलाइन ईमेल अटैचमेंट जोड़ें या हटाएँ Aspose.Email Editor App.
अटैचमेंट जोड़ना
ईमेल में अटैचमेंट जोड़ने के लिए कृपया इन चरणों का पालन करें:
- का एक इंस्टेंस बनाएं MailMessage क्लास।
- का एक इंस्टेंस बनाएं Attachment क्लास।
- अटैचमेंट को लोड करें Attachment इंस्टैंस।
- जोड़ें Attachment इंस्टेंस को MailMessage इंस्टैंस।
निम्न कोड स्निपेट दिखाता है कि ईमेल में अटैचमेंट कैसे जोड़ें।
// Create an instance of MailMessage class
MailMessage message = new MailMessage();
message.setFrom(new MailAddress("sender@from.com"));
message.getTo().add("receiver@to.com");
message.setSubject("This is message");
message.setBody("This is body");
// Load an attachment
Attachment attachment = new Attachment("1.txt");
// Add Multiple Attachment in instance of MailMessage class and Save message to disk
message.getAttachments().addItem(attachment);
message.addAttachment(new Attachment("1.jpg"));
message.addAttachment(new Attachment("1.doc"));
message.addAttachment(new Attachment("1.rar"));
message.addAttachment(new Attachment("1.pdf"));
message.save("AddAttachments.eml");
ऊपर हमने Aspose.Email के साथ आपके ईमेल संदेश में अटैचमेंट जोड़ने का विवरण दिया था। आगे दिखाया गया है कि अटैचमेंट कैसे हटाएँ और उनकी जानकारी स्क्रीन पर कैसे दिखाएँ।
अटैचमेंट हटाना
अटैचमेंट हटाने के लिए नीचे दिए गए चरणों का पालन करें:
- का एक इंस्टेंस बनाएं Attachment क्लास।
- इंस्टेंस में अटैचमेंट लोड करें Attachment क्लास।
- इंस्टेंस में अटैचमेंट जोड़ें MailMessage क्लास।
- इंस्टेंस से अटैचमेंट्स हटाएँ Attachment क्लास का उपयोग करके MailMessage क्लास इंस्टेंस।
निम्न कोड स्निपेट दिखाता है कि अटैचमेंट को कैसे हटाएँ।
// Create an instance of MailMessage class
MailMessage eml = new MailMessage();
eml.setFrom(new MailAddress("sender@from.com"));
eml.getTo().add("receiver@to.com");
// Load an attachment
Attachment attachment = new Attachment("1.txt");
eml.getAttachments().addItem(attachment);
// Remove attachment from your MailMessage
eml.getAttachments().removeItem(attachment);
अटैचमेंट फ़ाइल नाम दिखाना
अटैचमेंट फ़ाइल नाम दिखाने के लिए इन चरणों का पालन करें:
- ईमेल संदेश में अटैचमेंट्स पर लूप करें और
- प्रत्येक अटैचमेंट को सहेजें।
- प्रत्येक अटैचमेंट का नाम स्क्रीन पर दिखाएँ।
निम्न कोड स्निपेट दिखाता है कि अटैचमेंट फ़ाइल नाम स्क्रीन पर कैसे दिखाएँ।
MailMessage eml = MailMessage.load("Attachments.eml");
for (Attachment attachment : eml.getAttachments()) {
// Display the attachment file name
System.out.println(attachment.getName());
}
ईमेल अटैचमेंट्स निकालना
यह विषय ईमेल फ़ाइल से अटैचमेंट निकालने के बारे में बताता है। ईमेल अटैचमेंट वह फ़ाइल है जो ईमेल संदेश के साथ भेजी जाती है। यह फ़ाइल अलग संदेश के रूप में या उस संदेश का हिस्सा के रूप में भेजी जा सकती है जिससे यह संलग्न है। सभी ईमेल संदेश अतिरिक्त फ़ाइलें भेजने का विकल्प रखते हैं। ये अटैचमेंट के रूप में भेजी जाती हैं और इस क्लास की इंस्टेंस के रूप में प्रदर्शित होती हैं। Attachment class। यह Attachment क्लास का उपयोग किया जाता है MailMessage क्लास जो अटैचमेंट्स के साथ काम करती है। ईमेल संदेश से अटैचमेंट्स निकालने के लिए इन चरणों का पालन करें:
- का एक इंस्टेंस बनाएं MailMessage क्लास।
- ईमेल फ़ाइल को इसमें लोड करें। MailMessage इंस्टैंस।
- का एक इंस्टेंस बनाएं Attachment क्लास और इसे लूप में उपयोग करके सभी अटैचमेंट्स को निकालें।
- संलग्नक को सहेजें और स्क्रीन पर दिखाएँ।
|ईमेल में निकाले गए अटैचमेंट्स| | :- | |
| निम्न कोड स्निपेट दिखाता है कि ईमेल अटैचमेंट्स को कैसे निकालें।
MailMessage eml = MailMessage.load("Message.eml", new MsgLoadOptions());
for (Attachment attachment : eml.getAttachments()) {
attachment.save("MessageEmbedded_out.eml");
System.out.println(attachment.getName());
}
अटैचमेंट से Content-Description प्राप्त करना
Aspose.Email API अटैचमेंट हेडर से अटैचमेंट का Content-Description पढ़ने की क्षमता प्रदान करता है। निम्न कोड स्निपेट दिखाता है कि अटैचमेंट से कंटेंट विवरण कैसे प्राप्त करें।
MailMessage eml = MailMessage.load("EmailWithAttachEmbedded.eml");
System.out.println(eml.getAttachments().get_Item(0).getHeaders().get_Item("Content-Description"));
यह निर्धारित करना कि अटैचमेंट एम्बेडेड संदेश है या नहीं
निम्न कोड स्निपेट दर्शाता है कि अटैचमेंट एक एम्बेडेड संदेश है या नहीं।
MailMessage eml = MailMessage.load("EmailWithAttachEmbedded.eml");
System.out.println(eml.getAttachments().get_Item(0).isEmbeddedMessage()
? "Attachment is an embedded message."
: "Attachment isn't an embedded message.");
TNEF स्वरूपित अटैचमेंट्स का निर्धारण
यह Attachment.isTnef Aspose.Email Java API की यह प्रॉपर्टी दर्शाती है कि संदेश अटैचमेंट TNEF स्वरूपित है या नहीं।
निम्न कोड स्निपेट दर्शाता है कि अटैचमेंट TNEF स्वरूपित है या नहीं निर्धारित करें:
MailMessage eml = MailMessage.load(fileName);
for (Attachment attachment : eml.getAttachments()) {
System.out.println("Is Attachment TNEF?: " + attachment.isTnef());
}
TNEF अटैचमेंट्स को लोड और सहेजना
Aspose.Email for Java में मेथड प्रदान करता है MapiAttachment क्लास जो निम्नलिखित संचालन करती है:
TNEF से लोड करें
-
static MapiAttachment loadFromTnef(String fileName)– TNEF फ़ाइल से अटैचमेंट लोड करता है। -
static MapiAttachment loadFromTnef(InputStream stream)– TNEF स्ट्रीम से अटैचमेंट लोड करता है।
TNEF में सहेजें
-
void saveToTnef(String fileName)– एक अटैचमेंट को TNEF फ़ाइल में सहेजता है। -
void saveToTnef(OutputStream stream)– एक अटैचमेंट को TNEF स्ट्रीम में सहेजता है।
निम्न कोड उदाहरण प्रदर्शित करता है कि संदेश से TNEF अटैचमेंट को कैसे निकाला जाए, उसे स्ट्रीम या फ़ाइल में सहेजा जाए, और फिर उसे संदेश में वापस लोड किया जाए एक MapiAttachment:
// Load message containing a TNEF attachment (winmail.dat)
MapiMessage msg = MapiMessage.load("message.eml");
// Save the first attachment to a TNEF stream
ByteArrayOutputStream bos = new ByteArrayOutputStream();
msg.getAttachments().get(0).saveToTnef(bos);
// Load attachment back from the TNEF stream
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
MapiAttachment fromtnefAttachment = MapiAttachment.loadFromTnef(bis);
msg.getAttachments().addMapiAttachment(fromtnefAttachment);
// Load TNEF attachment directly from a file
fromtnefAttachment = MapiAttachment.loadFromTnef("winmail.dat");
msg.getAttachments().addMapiAttachment(fromtnefAttachment);
यदि अटैचमेंट URI-अटैचमेंट है तो उसका URI निकालना
निम्न कोड स्निपेट दिखाता है कि अटैचमेंट URI कैसे निकाला जाए।
MailMessage eml = MailMessage.load("fileName");
Attachment attachment = eml.getAttachments().get_Item(0);
if (attachment.isUri()) {
InputStream inputStream = attachment.getContentStream();
String uri = new String(IOUtils.toByteArray(inputStream), Charset.forName("utf-8"));
System.out.println("Attachment URI: " + uri);
}
रेफ़रेंस अटैचमेंट्स जोड़ना
एक रेफ़रेंस अटैचमेंट स्थानीय फ़ाइल अटैचमेंट का विकल्प है। कुछ मामलों में रेफ़रेंस अटैचमेंट प्राथमिकता हो सकता है, उदाहरण के लिए यदि आप इसकी पहुँच को प्रबंधित करना चाहते हों। नीचे दी गई क्लासेज़ ईमेल संदेशों और उनके अटैचमेंट्स को प्रबंधित और संशोधित करने के लिए उपयोग की जाती हैं:
- ReferenceAttachment - एक रेफ़रेंस अटैचमेंट को दर्शाता है।
- AttachmentPermissionType - वेब रेफ़रेंस अटैचमेंट से संबंधित अनुमति प्रकार डेटा।
- AttachmentProviderType - अटैचमेंट को हेरफेर करने वाली वेब सेवा का प्रकार।
निम्न कोड उदाहरण दर्शाता है कि फ़ाइल से ईमेल संदेश कैसे लोड किया जाए, विशिष्ट गुणों के साथ एक रेफ़रेंस अटैचमेंट बनाया जाए, और अटैचमेंट को ईमेल संदेश में जोड़ा जाए:
MailMessage eml = MailMessage.load("fileName");
ReferenceAttachment refAttach = new ReferenceAttachment("https://[attach_uri]")
refAttach.setName("Document.docx");
refAttach.setProviderType(AttachmentProviderType.OneDrivePro);
refAttach.setPermissionType(AttachmentPermissionType.AnyoneCanEdit);
eml.getAttachments().addItem(refAttach);
एम्बेडेड ऑब्जेक्ट्स के साथ काम करना
यह विषय ईमेल फ़ाइल से एम्बेडेड ऑब्जेक्ट्स को निकालने के बारे में बताता है। एम्बेडेड ऑब्जेक्ट वह ऑब्जेक्ट है जो एक एप्लीकेशन द्वारा बनाया गया था और दूसरे एप्लीकेशन द्वारा बनाए गए दस्तावेज़ या फ़ाइल में सम्मिलित किया गया है। उदाहरण के लिए, Microsoft Excel स्प्रेडशीट को Microsoft Word रिपोर्ट में एम्बेड किया जा सकता है, या एक वीडियो फ़ाइल को Microsoft PowerPoint प्रस्तुति में एम्बेड किया जा सकता है। जब कोई फ़ाइल एम्बेड की जाती है, तो वह किसी अन्य दस्तावेज़ में सम्मिलित या पेस्ट करने के बजाय अपना मूल स्वरूप बनाए रखती है। एम्बेडेड दस्तावेज़ को मूल एप्लीकेशन में खोला जा सकता है और संशोधित किया जा सकता है।
ईमेल में ऑब्जेक्ट्स को एम्बेड करना
यह LinkedResource क्लास का उपयोग किया जाता है MailMessage क्लास जो आपके ईमेल संदेशों में ऑब्जेक्ट्स को एम्बेड करती है। एम्बेडेड ऑब्जेक्ट जोड़ने के लिए, इन चरणों का अनुसरण करें
- का एक इंस्टेंस बनाएं MailMessage क्लास।
- प्रेषक, प्राप्तकर्ता और विषय मान यहाँ निर्दिष्ट करें MailMessage इंस्टैंस।
- का एक इंस्टेंस बनाएं AlternateView क्लास।
- का एक इंस्टेंस बनाएं LinkedResource क्लास।
- एक एम्बेडेड ऑब्जेक्ट को लोड करें LinkedResourceCollection.
- लोड किए गए एम्बेडेड ऑब्जेक्ट को जोड़ें MailMessage क्लास इंस्टेंस।
- जोड़ें AlternateView इंस्टेंस को MailMessage क्लास इंस्टेंस।
नीचे दिए गए कोड स्निपेट्स एक ईमेल संदेश बनाते हैं जिसमें साधारण टेक्स्ट और HTML बॉडी दोनों होते हैं और HTML में एक चित्र एम्बेड किया गया है।
|ईमेल में एम्बेडेड चित्र| | :- | |
| आप किसी भी संख्या में एम्बेडेड ऑब्जेक्ट भेज सकते हैं। संलग्नक का आकार मेल सर्वर द्वारा सीमित है। उदाहरण के लिए, Gmail 10MB से बड़े फ़ाइल आकार को सपोर्ट नहीं करता। नीचे दिया गया कोड स्निपेट दिखाता है कि ईमेल में ऑब्जेक्ट्स को कैसे एम्बेड किया जाए।
// Create an instance of the MailMessage class and Set the addresses and Set the content
MailMessage mail = new MailMessage();
mail.setFrom(new MailAddress("sender@from.com"));
mail.getTo().add("receiver@to.com");
mail.setSubject("This is an email");
// Create the plain text part It is viewable by those clients that don't support HTML
AlternateView 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'.
AlternateView 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
LinkedResource barcode = new LinkedResource("1.jpg", MediaTypeNames.Image.JPEG);
barcode.setContentId("barcode");
mail.getLinkedResources().addItem(barcode);
mail.getAlternateViews().addItem(plainView);
mail.getAlternateViews().addItem(htmlView);
mail.save("EmbeddedImage_out.msg", SaveOptions.getDefaultMsgUnicode());
ईमेल से एम्बेडेड ऑब्जेक्ट्स को हटाना
LinkedResourceCollection के द्वारा एक्सेस किया जाता है MailMessage.LinkedResources प्रॉपर्टी। यह LinkedResourceCollection कलेक्शन एक विधि प्रदान करता है जिससे ईमेल संदेश में जोड़े गए एम्बेडेड ऑब्जेक्ट्स को पूरी तरह हटाया जा सकता है। इसका ओवरलोडेड संस्करण उपयोग करें LinkedResourceCollection.removeAt ईमेल संदेश से एम्बेडेड ऑब्जेक्ट के सभी निशानों को हटाने की विधि।
नीचे दिया गया नमूना कोड दिखाता है कि ईमेल संदेश से एम्बेडेड ऑब्जेक्ट्स को कैसे हटाया जाए।
// Load the test message with Linked Resources
MailMessage msg = MailMessage.load("EmlWithLinkedResources.eml");
// Remove a LinkedResource
msg.getLinkedResources().removeAt(0, true);
// Now clear the Alternate View for linked Resources
msg.getAlternateViews().get_Item(0).getLinkedResources().clear(true);
एम्बेडेड वस्तुओं को निकालना
यह विषय ईमेल फ़ाइल से एम्बेडेड ऑब्जेक्ट्स को निकालने के बारे में बताता है। एम्बेडेड ऑब्जेक्ट वह ऑब्जेक्ट है जो एक एप्लीकेशन द्वारा बनाया गया था और दूसरे एप्लीकेशन द्वारा बनाए गए दस्तावेज़ या फ़ाइल में सम्मिलित किया गया है। उदाहरण के लिए, Microsoft Excel स्प्रेडशीट को Microsoft Word रिपोर्ट में एम्बेड किया जा सकता है, या एक वीडियो फ़ाइल को Microsoft PowerPoint प्रस्तुति में एम्बेड किया जा सकता है। जब कोई फ़ाइल एम्बेड की जाती है, तो वह किसी अन्य दस्तावेज़ में सम्मिलित या पेस्ट करने के बजाय अपना मूल स्वरूप बनाए रखती है। एम्बेडेड दस्तावेज़ को मूल एप्लीकेशन में खोला जा सकता है और संशोधित किया जा सकता है। ईमेल संदेश से एम्बेडेड ऑब्जेक्ट निकालने के लिए, नीचे दिए गए चरणों का पालन करें:
- का एक इंस्टेंस बनाएं MailMessage क्लास।
- ईमेल फ़ाइल को लोड करें। MailMessage इंस्टैंस।
- एक लूप बनाएँ और क्लास की एक इंस्टेंस बनाएँ। Attachment उसमें क्लास।
- संलग्नक को सहेजें और स्क्रीन पर दिखाएँ।
- प्रेषक और प्राप्तकर्ता पते को निर्दिष्ट करें MailMessage इंस्टैंस।
- इसका उपयोग करके ईमेल भेजें SmtpClient क्लास।
नीचे दिया गया कोड स्निपेट ईमेल से एम्बेडेड ऑब्जेक्ट्स निकालता है।
|ईमेल में निकाले गए एम्बेडेड ऑब्जेक्ट्स| | :- | |
| नीचे दिया गया कोड स्निपेट दिखाता है कि एम्बेडेड ऑब्जेक्ट्स कैसे निकालें।
MailMessage mailMsg = MailMessage.load("Message.msg", new MsgLoadOptions());
for (Attachment attachment : mailMsg.getAttachments()) {
attachment.save("MessageEmbedded_out.msg");
System.out.println(attachment.getName());
}
RTF स्वरूपित MSG से एम्बेडेड अटैचमेंट की पहचान और निष्कर्षण
निम्नलिखित कोड का उपयोग RTF स्वरूपित संदेशों के लिए किया जा सकता है ताकि इनलाइन या संदेश बॉडी में आइकन के रूप में दिखाई देने वाले अटैचमेंट को अलग किया जा सके और निकाल सकें। नीचे दिया गया कोड स्निपेट दिखाता है कि RTF स्वरूपित MSG से एम्बेडेड अटैचमेंट को कैसे पहचानें और निकालें।
public static void extractInlineAttachments() {
MapiMessage message = MapiMessage.load("MSG file with RTF Formatting.msg");
for (MapiAttachment attachment : message.getAttachments()) {
if (isAttachmentInline(attachment)) {
try {
saveAttachment(attachment, UUID.randomUUID().toString());
} catch (Exception ex) {
System.err.println(ex);
}
}
}
}
static boolean isAttachmentInline(MapiAttachment attachment) {
for (MapiProperty property : attachment.getObjectData().getProperties().get_Values()) {
if ("\u0003ObjInfo".equals(property.getName())) {
byte[] data = property.getData();
int odtPersist1 = data[1] << 8 | data[0];
return (odtPersist1 & 0x40) == 0;
}
}
return false;
}
static void saveAttachment(MapiAttachment attachment, String fileName) throws IOException {
for (MapiProperty property : attachment.getObjectData().getProperties().get_Values()) {
if ("Package".equals(property.getName())) {
try (FileOutputStream fs = new FileOutputStream(fileName)) {
fs.write(property.getData(), 0, property.getData().length);
}
}
}
}
साइन किए गए ईमेल से अटैचमेंट पुनः प्राप्त करना
साइन किए गए ईमेल में एकल smime.p7m अटैचमेंट होता है। इसका मतलब है कि ईमेल SMIME द्वारा एन्क्रिप्टेड है। Smime.p7m फ़ाइल फ़ॉर्मेट डिजिटल सिग्नेचर है। इस ईमेल की सामग्री देखने के लिए उपयोग करें RemoveSignature मेथड। मेथड एक … लौटाता है MailMessage ऑब्जेक्ट बिना डिजिटल सिग्नेचर के।
MailMessage signedEml = MailMessage.load("signed.eml");
if (signedEml.isSigned()) {
for (int i = 0; i < signedEml.getAttachments().size(); i++) {
System.out.println("Signed email attachment" + i + ": " + signedEml.getAttachments().get_Item(i).getName());
}
// The email is signed. Remove a signature.
MailMessage eml = signedEml.removeSignature();
System.out.println("Signature removed.");
for (int i = 0; i < eml.getAttachments().size(); i++) {
System.out.println("Email attachment" + i + ": " + eml.getAttachments().get_Item(i).getName());
}
}
Content-Type और Content-Disposition के साथ कार्य करना
Aspose.Email API अटैचमेंट के साथ काम करने की क्षमता प्रदान करता है Content-Type और Content-Disposition अटैचमेंट हेडर से। नीचे दिया गया कोड स्निपेट दिखाता है कि अटैचमेंट से कंटेंट विवरण कैसे प्राप्त और बदलें।
Content-Type और Content-Disposition पैरामीटर का प्रदर्शन
निम्नलिखित कोड स्निपेट दिखाता है कि स्क्रीन पर Content-Type और Content-Disposition के पैरामीटर कैसे प्रदर्शित करें:
void run(MailMessage message) {
// Attachments
for (Attachment attachment : message.getAttachments()) {
ContentDisposition contentDisposition = attachment.getContentDisposition();
printContentDisposition(contentDisposition);
ContentType contentType = attachment.getContentType();
printContentType(contentType);
}
// Linked Resources
for (LinkedResource attachment : message.getLinkedResources()) {
ContentDisposition contentDisposition = attachment.getContentDisposition();
printContentDisposition(contentDisposition);
ContentType contentType = attachment.getContentType();
printContentType(contentType);
}
}
void printContentType(ContentType contentType) {
System.out.println("media-type: " + contentType.getMediaType());
System.out.println("charset: " + contentType.getCharSet());
System.out.println("name: " + contentType.getName());
}
void printContentDisposition(ContentDisposition contentDisposition) {
System.out.println("disposition-type: " + contentDisposition.getDispositionType());
System.out.println("is-inline: " + contentDisposition.getInline());
System.out.println("filename: " + contentDisposition.getFileName());
System.out.println("creation-date: " + contentDisposition.getCreationDate());
System.out.println("modification-date: " + contentDisposition.getModificationDate());
System.out.println("read-date: " + contentDisposition.getReadDate());
System.out.println("size: " + contentDisposition.getSize());
}
अटैचमेंट के साथ Content-Type और Content-Disposition पैरामीटर का उपयोग
निम्नलिखित कोड स्निपेट दिखाता है कि अटैचमेंट के साथ Content-Type और Content-Disposition पैरामीटर कैसे उपयोग करें:
MailMessage eml = MailMessage.load(fileName);
Attachment attachment = new Attachment(pdfFileName, new ContentType("application/octet-stream"));
attachment.getContentDisposition().setDispositionType("attachment");
attachment.getContentDisposition().setFileName(fileName);
eml.addAttachment(attachment);