अटैचमेंट
किसी भेजे जाने वाले संदेश में फ़ाइलें अटैच करने के लिए POST /v1/email/messages पेलोड में एक attachments array जोड़ें। हर एंट्री में फ़ाइल के bytes base64 में एन्कोड करके content में दिए जाते हैं, साथ में एक filename भी होता है। यही array किसी batch आइटम में भी काम करता है। पूरे अनुरोध और प्रतिक्रिया के schema API संदर्भ में हैं।
एक अटैचमेंट के साथ भेजना
await bird.email.send({
from: "hello@yourdomain.com",
to: ["delivered@messagebird.dev"],
subject: "Your invoice",
html: "<p>Thanks for your order. Your invoice is attached.</p>",
attachments: [
{
filename: "invoice.pdf",
content: "JVBERi0xLjcKJ...",
content_type: "application/pdf",
},
],
});client.email.send(
from_="hello@yourdomain.com",
to=["delivered@messagebird.dev"],
subject="Your invoice",
html="<p>Thanks for your order. Your invoice is attached.</p>",
attachments=[
{
"filename": "invoice.pdf",
"content": "JVBERi0xLjcKJ...",
"content_type": "application/pdf",
}
],
)_, err := client.Email.Send(context.Background(), bird.EmailSendParams{
From: "hello@yourdomain.com",
To: []string{"delivered@messagebird.dev"},
Subject: "Your invoice",
HTML: "<p>Thanks for your order. Your invoice is attached.</p>",
Attachments: []bird.EmailAttachment{{
Filename: "invoice.pdf",
Content: pdfBytes,
ContentType: bird.String("application/pdf"),
}},
})$bird->email->send(
from: 'hello@yourdomain.com',
to: ['delivered@messagebird.dev'],
subject: 'Your invoice',
html: '<p>Thanks for your order. Your invoice is attached.</p>',
attachments: [
(new EmailAttachment())
->setFilename('invoice.pdf')
->setContent('JVBERi0xLjcKJ...')
->setContentType('application/pdf'),
],
);bird email send \
--from hello@yourdomain.com \
--to delivered@messagebird.dev \
--subject 'Your invoice' \
--html '<p>Thanks for your order. Your invoice is attached.</p>' \
--attach ./invoice.pdfcurl -X POST https://us1.platform.bird.com/v1/email/messages \
-H "Authorization: Bearer bk_us1_..." \
-H "Content-Type: application/json" \
-d '{
"from": "hello@yourdomain.com",
"to": ["delivered@messagebird.dev"],
"subject": "Your invoice",
"html": "<p>Thanks for your order. Your invoice is attached.</p>",
"attachments": [
{
"filename": "invoice.pdf",
"content": "JVBERi0xLjcKJ...",
"content_type": "application/pdf"
}
]
}'CLI फ़ाइल को पढ़ता है और आपके लिए उसे base64 में एन्कोड करता है; API का उपयोग करते समय एन्कोड किए गए bytes आपको खुद देने होते हैं। Go SDK कच्चे bytes लेता है और भेजते समय उन्हें एन्कोड करता है।
content फ़ाइल के कच्चे bytes हैं, जो base64 में एन्कोड किए गए हैं। content_type वैकल्पिक है: इसे छोड़ने पर हम filename के extension से MIME type का अनुमान लगाते हैं, और जिस extension को हम नहीं पहचानते उसके लिए application/octet-stream का उपयोग करते हैं। भेजने से जुड़ी बाकी सभी बातें ठीक वैसे ही काम करती हैं जैसे ईमेल भेजना में: अटैचमेंट होने से 202, async मॉडल, tags और metadata में कोई बदलाव नहीं होता।
अटैचमेंट के फ़ील्ड
| फ़ील्ड | प्रकार | आवश्यक | टिप्पणियाँ |
|---|---|---|---|
filename | स्ट्रिंग | हाँ | 1 से 255 अक्षर; प्राप्तकर्ता को दिखाया जाता है। इसमें लाइन ब्रेक या कंट्रोल कैरेक्टर नहीं हो सकते। |
content | स्ट्रिंग | हाँ | Base64 में एन्कोड की गई फ़ाइल बाइट्स। |
content_type | स्ट्रिंग | नहीं | MIME टाइप; न देने पर फ़ाइल नाम के एक्सटेंशन से तय किया जाता है। |
content_id | string | नहीं | 1 से 128 वर्ण, [A-Za-z0-9._-]। फ़ाइल को अटैचमेंट के बजाय इनलाइन दिखाने के लिए इसे सेट करें। |
एक ईमेल में अधिकतम 20 अटैचमेंट हो सकते हैं (attachments में अधिकतम 20 आइटम हो सकते हैं)।
इनलाइन इमेज
किसी इमेज को अटैच करने के बजाय HTML बॉडी में एम्बेड करने के लिए, अटैचमेंट को एक content_id दें और मार्कअप में cid: URL से उसका संदर्भ दें:
{
"html": "<p>Welcome aboard!</p><img src=\"cid:welcome-banner\"/>",
"attachments": [
{
"filename": "banner.png",
"content": "iVBORw0KGgoAAAANS...",
"content_type": "image/png",
"content_id": "welcome-banner"
}
]
}content_id ही cid: संदर्भ और अटैचमेंट को आपस में जोड़ता है। एक भेजे गए संदेश में हर इनलाइन इमेज का content_id अद्वितीय होना चाहिए; डुप्लिकेट होने पर अनुरोध 422 के साथ अस्वीकार हो जाता है। जिस अटैचमेंट में content_id नहीं होता, वह सामान्य फ़ाइल अटैचमेंट के रूप में डिलीवर होता है।
आकार की सीमा
यदि किसी संदेश का अनुमानित जनरेट किया गया आकार 20 MB से अधिक है, तो हम उसे 413 के साथ अस्वीकार कर देते हैं। इस अनुमान में HTML बॉडी, टेक्स्ट बॉडी और हर अटैचमेंट शामिल हैं, जिन्हें base64 एन्कोडिंग के बाद मापा जाता है। एन्कोडिंग से मूल बाइट्स लगभग 4/3 गुना बढ़ जाती हैं, इसलिए 15 MB की एक फ़ाइल अकेले ही पूरी 20 MB सीमा भर देती है। सामान्य नियम के रूप में, अटैचमेंट की कुल मूल सामग्री 15 MB से काफ़ी कम रखें, ताकि बॉडी और MIME रैपिंग भी सीमा में आ सकें।
प्राप्त करने वाले सर्वर कम आकार सीमाएँ लागू कर सकते हैं। Bird द्वारा स्वीकार किया गया संदेश भी बाउंस हो सकता है, यदि प्राप्तकर्ता का सर्वर उसके आकार को अस्वीकार कर दे। अटैचमेंट का आकार उन मेलबॉक्स प्रदाताओं और संगठनों के अनुसार चुनें जिन्हें आप संदेश भेजते हैं।
प्राप्त संदेशों के लिए इनबाउंड संदेश का आकार देखें।
अवरुद्ध फ़ाइल प्रकार
एक्ज़ीक्यूटेबल और स्क्रिप्ट अटैचमेंट सत्यापन के समय 422 के साथ अस्वीकार कर दिए जाते हैं। यह जाँच content_type या फ़ाइल नाम के एक्सटेंशन, दोनों में से किसी के आधार पर होती है। अवरुद्ध एक्सटेंशन में .exe, .dll, .msi, .bat, .cmd, .scr, .jar, .js, .vbs, .ps1, .sh, .hta और .lnk शामिल हैं। application/x-msdownload, application/java-archive और text/javascript जैसे समकक्ष MIME प्रकार भी अवरुद्ध हैं। यह सत्यापन वायरस स्कैनर नहीं है। किसी अवरुद्ध फ़ाइल को साझा करने के लिए उसे होस्ट करें और उसका लिंक भेजें।
बैच में
बैच भेजने के हर आइटम का अपना attachments हो सकता है। उस पर वही फ़ील्ड नियम और प्रति संदेश वही 20 MB की सीमा लागू होती है। इसके ऊपर, बैच के सीरियलाइज़ किए गए अनुरोध बॉडी की अपनी अलग सीमा है, और base64-एन्कोड किए गए अटैचमेंट उसे जल्दी भर देते हैं। बैच-स्तर की सीमा और उसके अनुसार बैच को बाँटने का तरीका जानने के लिए बैच भेजना देखें।
अटैचमेंट पढ़ना और डाउनलोड करना
API रीड कभी अटैचमेंट के बाइट नहीं लौटाते। GET /v1/email/messages/{message_id} केवल मेटाडेटा वाला attachments ऐरे लौटाता है। हर एंट्री में अटैचमेंट का id, filename, content_type, size (डिकोड किए गए बाइट) और inline होता है:
{
"attachments": [
{
"id": "ea_019c...",
"filename": "invoice.pdf",
"content_type": "application/pdf",
"size": 215432,
"inline": false
}
]
}मूल बाइट वापस पाने के लिए GET /v1/email/messages/{message_id}/attachments/{attachment_id} को कॉल करें (संदर्भ)। यह फ़ाइल को उसके अपने कंटेंट टाइप और फ़ाइल नाम बताने वाले Content-Disposition हेडर के साथ स्ट्रीम करता है। यह दो शर्तें पूरी होने पर ही काम करता है:
- वर्कस्पेस के लिए कंटेंट स्टोरेज सक्षम होना चाहिए। स्टोरेज अक्षम होने पर कुछ भी स्टोर नहीं होता, इसलिए डाउनलोड करने के लिए कुछ नहीं होता। 202 का क्या अर्थ है देखें।
- भेजने के बाद अटैचमेंट 30 दिनों तक रखे जाते हैं। उसके बाद डाउनलोड
410 Goneलौटाता है।
404 का अर्थ है कि संदेश का कोई कंटेंट स्टोर नहीं है या उस ID वाला कोई अटैचमेंट नहीं है। 425 Too Early का अर्थ है कि अटैचमेंट अभी स्टोर हो रहा है, और आप कुछ देर बाद अनुरोध के लिए फिर से प्रयास कर सकते हैं।
अगले कदम
- ईमेल भेजना: भेजने के पेलोड का बाकी हिस्सा, जिसमें प्राप्तकर्ता, कंटेंट, टैग और async मॉडल शामिल हैं
- बैच में भेजना: बैच, और कई संदेशों में अटैचमेंट कहाँ फिट होते हैं
- API संदर्भ: संदेश बनाएँ: पूरा अनुरोध स्कीमा, जिसमें
attachmentsभी शामिल है - API संदर्भ: अटैचमेंट डाउनलोड करें: अटैचमेंट वापस पाने का एंडपॉइंट और उसके स्टेटस कोड
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।