Rust पर ईमेल भेजना: lettre और mailparse लाइब्रेरीज़
\n\nRust एक सिस्टम प्रोग्रामिंग भाषा है, जिसका उपयोग उच्च-लोड वेब सेवाओं और माइक्रोसर्विसेज बनाने के लिए तेजी से बढ़ रहा है। ऐसी परियोजनाओं में सामान्य कार्यों में से एक ईमेल भेजना है। Rust के इकोसिस्टम में ईमेल के साथ काम करने के लिए कई परिपक्व लाइब्रेरीज़ हैं, जिनमें lettre और mailparse प्रमुख हैं।
\n\nइस लेख में, हम विस्तार से देखेंगे कि Rust पर SMTP का उपयोग करके ईमेल भेजना कैसे सेट करें, अटैचमेंट कैसे जोड़ें और HTML ईमेल कैसे बनाएं, साथ ही आने वाले संदेशों को कैसे पार्स करें। यह सामग्री उन डेवलपर्स के लिए है जो Rust की मूल बातों से पहले से परिचित हैं।
\n\nlettre लाइब्रेरी: ईमेल भेजने का आधार
\n\nLettre Rust में ईमेल के साथ काम करने के लिए एक आधुनिक, एसिंक्रोनस और सिंक्रोनस लाइब्रेरी है। यह समर्थन करती है:
\n\n- \n
- SMTP ट्रांसपोर्ट (STARTTLS और SSL/TLS सहित); \n
- MIME प्रारूप में ईमेल बनाना (टेक्स्ट, HTML, अटैचमेंट); \n
- एन्कोडिंग के साथ काम करना (Base64, Quoted-Printable); \n
- tokio या async-std के माध्यम से एसिंक्रोनस ट्रांसपोर्ट। \n
प्रोजेक्ट में lettre जोड़ने के लिए, यह कमांड चलाएँ:
\n\ncargo add lettre\ncargo add tokio --features full # एसिंक्रोनस मोड के लिए\n\nSMTP के माध्यम से बुनियादी ईमेल भेजना
\n\nआइए एक सरल उदाहरण देखें — Gmail (या किसी अन्य प्रदाता) के SMTP सर्वर के माध्यम से टेक्स्ट ईमेल भेजना।
\n\nuse lettre::transport::smtp::authentication::Credentials;\nuse lettre::{Message, SmtpTransport, Transport};\n\nfn main() -> Result<(), Box<dyn std::error::Error>> {\n // ईमेल बनाएँ\n let email = Message::builder()\n .from("प्रेषक <from@example.com>".parse()?)\n .to("प्राप्तकर्ता <to@example.com>".parse()?)\n .subject("Rust से नमस्ते!")\n .body("यह Rust पर भेजा गया एक परीक्षण ईमेल है।".to_string())?;\n\n // SMTP सेटिंग्स (Gmail के लिए उदाहरण)\n let creds = Credentials::new(\n "your_email@gmail.com".to_string(),\n "your_app_password".to_string(),\n );\n\n // ट्रांसपोर्ट बनाएँ\n let mailer = SmtpTransport::relay("smtp.gmail.com")?\n .credentials(creds)\n .build();\n\n // भेजें\n match mailer.send(&email) {\n Ok(_) => println!("ईमेल सफलतापूर्वक भेजा गया!"),\n Err(e) => eprintln!("भेजने में त्रुटि: {}", e),\n }\n\n Ok(())\n}\n\nध्यान दें: Gmail के लिए ऐप पासवर्ड की आवश्यकता होगी, मुख्य पासवर्ड की नहीं। अन्य प्रदाताओं (Yandex, Mail.ru, आपका अपना SMTP) के लिए, सर्वर पता और पोर्ट बदलें।
\n\nअटैचमेंट के साथ HTML ईमेल भेजना
\n\nLettre आसानी से मल्टीपार्ट MIME संदेश बनाने की अनुमति देता है। आइए HTML बॉडी और एक अटैचमेंट जोड़ें:
\n\nuse lettre::message::header::ContentType;\nuse lettre::message::{Attachment, MultiPart, SinglePart};\nuse lettre::{Message, SmtpTransport, Transport};\n\nfn send_html_with_attachment() -> Result<(), Box<dyn std::error::Error>> {\n // ईमेल का HTML बॉडी\n let html_body = "<h1>नमस्ते!</h1><p>यह Rust से HTML ईमेल है।</p>".to_string();\n\n // मल्टीपार्ट ईमेल बनाएँ\n let email = Message::builder()\n .from("प्रेषक <from@example.com>".parse()?)\n .to("प्राप्तकर्ता <to@example.com>".parse()?)\n .subject("अटैचमेंट के साथ HTML ईमेल")\n .multipart(\n MultiPart::mixed()\n .singlepart(\n SinglePart::builder()\n .header(ContentType::TEXT_HTML)\n .body(html_body),\n )\n .singlepart(\n Attachment::new("document.pdf".to_string())\n .body(vec![0x25, 0x50, 0x44, 0x46], ContentType::parse("application/pdf")?),\n ),\n )?;\n\n // भेजना (पिछले उदाहरण के समान)\n