Rust पर ईमेल भेजना: मेलिंग के लिए lettre और async-smtp लाइब्रेरीज़

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Rust पर ईमेल भेजना: lettre और async-smtp लाइब्रेरीज़

ईमेल भेजना किसी भी शैक्षिक या व्यावसायिक वेबसाइट का एक बुनियादी कार्य है। Rust इकोसिस्टम में इस कार्य के लिए कई परिपक्व समाधान मौजूद हैं। इस लेख में हम दो सबसे लोकप्रिय लाइब्रेरीज़ पर चर्चा करेंगे: lettre (सिंक्रोनस भेजना) और async-smtp (एसिंक्रोनस भेजना)। आप सीखेंगे कि SMTP क्लाइंट कैसे सेट करें, एक साधारण ईमेल भेजें, अटैचमेंट जोड़ें और त्रुटियों को संभालें।



1. lettre लाइब्रेरी — सिंक्रोनस भेजना

lettre मेल प्रोटोकॉल (SMTP, SMTPS, STARTTLS) के साथ काम करने के लिए एक मॉड्यूलर लाइब्रेरी है। यह समर्थन करती है:

  • बाहरी SMTP सर्वर (Gmail, Yandex, Mail.ru, कस्टम) के माध्यम से भेजना।
  • MIME फॉर्मेट (टेक्स्ट, HTML, अटैचमेंट) का समर्थन।
  • TLS/SSL एन्क्रिप्शन।
  • एन्कोडिंग (Base64, quoted-printable) के साथ काम करना।


1.1. lettre की स्थापना

Cargo.toml में जोड़ें:

[dependencies]lettre = "0.11"lettre_email = "0.11"  # पुराना, लेकिन अभी भी उपयोग में है# एसिंक्रोनस संस्करण के लिए — "tokio1" या "async-std1" फीचर के साथ lettre


1.2. उदाहरण: SMTP के माध्यम से साधारण ईमेल भेजना

use lettre::transport::smtp::authentication::Credentials;use lettre::transport::smtp::SmtpTransport;use lettre::message::Message;use lettre::MessageBuilder;

fn main() { // ईमेल बनाएँ let email = Message::builder() .from("sender@example.com".parse().unwrap()) .to("recipient@example.com".parse().unwrap()) .subject("Rust से नमस्ते!") .body("यह एक परीक्षण ईमेल है, जो lettre लाइब्रेरी का उपयोग करके भेजा गया है।".to_string()) .unwrap();

// SMTP सर्वर सेटिंग्स (Gmail का उदाहरण) let creds = Credentials::new("your_email@gmail.com".to_string(), "your_password".to_string());

// सुरक्षित कनेक्शन खोलें let mailer = SmtpTransport::starttls_relay("smtp.gmail.com") .unwrap() .credentials(creds) .build();

// भेजें match mailer.send(&email) { Ok(_) => println!("ईमेल सफलतापूर्वक भेजा गया!"), Err(e) => eprintln!("भेजने में त्रुटि: {}", e), }}


1.3. उदाहरण: HTML सामग्री और अटैचमेंट के साथ ईमेल

use lettre::message::{MultiPart, SinglePart};use lettre::Message;

fn build_html_email() -> Message { // HTML भाग let html_part = SinglePart::builder() .header(lettre::message::header::ContentType::TEXT_HTML) .body(String::from("<h1>नमस्ते!</h1><p>यह HTML ईमेल है।</p>"));

// अटैचमेंट (उदाहरण के लिए, PDF फ़ाइल) let attachment = SinglePart::builder() .header(lettre::message::header::ContentType::parse("application/pdf").unwrap()) .body(vec![0x25, 0x50, 0x44, 0x46]); // PDF के लिए प्लेसहोल्डर

// बहु-घटक ईमेल बनाएँ Message::builder() .from("from@example.com".parse().unwrap()) .to("to@example.com".parse().unwrap()) .subject("HTML और अटैचमेंट के साथ ईमेल") .multipart( MultiPart::mixed() .multipart(MultiPart::alternative().singlepart(html_part)) .singlepart(attachment), ) .unwrap()}


2. एसिंक्रोनस भेजना: async-smtp

async-smtp लाइब्रेरी एसिंक्रोनस एप्लिकेशन (जैसे, tokio या async-std के साथ) में नॉन-ब्लॉकिंग ईमेल भेजने के लिए है। यह lettre के समान API का उपयोग करती है, लेकिन async/await के साथ।



2.1. async-smtp की स्थापना

[dependencies]async-smtp = "0.6"tokio = { version = "1", features = ["full"] }


2.2. उदाहरण: एसिंक्रोनस भेजना

use async_smtp::{SmtpClient, SmtpTransport};use async_smtp::authentication::Credentials;use lettre::message::Mess                    

अनुशंसाएँ