You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
importlumenmail/messageimportlumenmail/smtppubfnmain(){// Build the email messageletemail=message.new()|>message.from_name_email("John Doe","john@example.com")|>message.to_email("recipient@example.com")|>message.subject("Hello from Gleam!")|>message.text_body("This is a test email sent with lumenmail.")// Connect to SMTP server and sendletassertOk(client)=smtp.builder("smtp.example.com",587)|>smtp.auth("username","password")|>smtp.connect()letassertOk(_)=smtp.send(client,email)letassertOk(_)=smtp.close(client)}
Examples
Simple Text Email
importlumenmail/messageimportlumenmail/smtppubfnsend_simple_email(){letemail=message.new()|>message.from_email("sender@example.com")|>message.to_email("recipient@example.com")|>message.subject("Hello!")|>message.text_body("This is a plain text email.")letassertOk(client)=smtp.builder("smtp.example.com",587)|>smtp.auth("user","password")|>smtp.connect()letassertOk(_)=smtp.send(client,email)letassertOk(_)=smtp.close(client)}
HTML Email with Plain Text Fallback
importlumenmail/messageimportlumenmail/smtppubfnsend_html_email(){letemail=message.new()|>message.from_name_email("Newsletter","news@example.com")|>message.to_email("subscriber@example.com")|>message.subject("Weekly Newsletter")|>message.text_body("Your weekly update in plain text.")|>message.html_body("<h1>Weekly Newsletter</h1><p>Your weekly update!</p>")letassertOk(client)=smtp.builder("smtp.example.com",587)|>smtp.auth("user","password")|>smtp.connect()letassertOk(_)=smtp.send(client,email)letassertOk(_)=smtp.close(client)}
Email with Attachments
importlumenmail/messageimportlumenmail/smtppubfnsend_with_attachment(){letpdf_data=<<...>> // Your PDF file as BitArray
let email = message.new()
|> message.from_email("sender@example.com")
|> message.to_email("recipient@example.com")
|> message.subject("Document Attached")
|> message.text_body("Please find the document attached.")
|> message.attachment("document.pdf", message.ApplicationOctetStream, pdf_data)
let assert Ok(client) = smtp.builder("smtp.example.com", 587)
|> smtp.auth("user", "password")
|> smtp.connect()letassertOk(_)=smtp.send(client,email)letassertOk(_)=smtp.close(client)}
importlumenmail/messageimportlumenmail/smtppubfnsend_via_gmail(){letemail=message.new()|>message.from_email("your.email@gmail.com")|>message.to_email("recipient@example.com")|>message.subject("Sent from Gmail")|>message.text_body("Hello from Gmail!")// Gmail uses port 587 with STARTTLSletassertOk(client)=smtp.builder("smtp.gmail.com",587)|>smtp.auth("your.email@gmail.com","your-app-password")|>smtp.connect()letassertOk(_)=smtp.send(client,email)letassertOk(_)=smtp.close(client)}
Using Implicit TLS (Port 465)
importlumenmail/messageimportlumenmail/smtppubfnsend_with_implicit_tls(){letemail=message.new()|>message.from_email("sender@example.com")|>message.to_email("recipient@example.com")|>message.subject("Secure Email")|>message.text_body("Sent over implicit TLS.")// Port 465 automatically uses implicit TLSletassertOk(client)=smtp.builder("smtp.example.com",465)|>smtp.auth("user","password")|>smtp.connect()letassertOk(_)=smtp.send(client,email)letassertOk(_)=smtp.close(client)}
OAuth2 Authentication
importlumenmail/messageimportlumenmail/smtpimportlumenmail/typespubfnsend_with_oauth2(){letemail=message.new()|>message.from_email("user@gmail.com")|>message.to_email("recipient@example.com")|>message.subject("OAuth2 Email")|>message.text_body("Sent using OAuth2!")letassertOk(client)=smtp.builder("smtp.gmail.com",587)|>smtp.credentials(types.OAuth2("user@gmail.com","oauth2-access-token"))|>smtp.connect()letassertOk(_)=smtp.send(client,email)letassertOk(_)=smtp.close(client)}
Sending Multiple Emails (Connection Reuse)
importlumenmail/messageimportlumenmail/smtppubfnsend_multiple_emails(){letassertOk(client)=smtp.builder("smtp.example.com",587)|>smtp.auth("user","password")|>smtp.connect()// Send first emailletemail1=message.new()|>message.from_email("sender@example.com")|>message.to_email("recipient1@example.com")|>message.subject("Email 1")|>message.text_body("First email")letassertOk(_)=smtp.send(client,email1)// Reset connection stateletassertOk(_)=smtp.reset(client)// Send second emailletemail2=message.new()|>message.from_email("sender@example.com")|>message.to_email("recipient2@example.com")|>message.subject("Email 2")|>message.text_body("Second email")letassertOk(_)=smtp.send(client,email2)letassertOk(_)=smtp.close(client)}