Installation

gem install mail

Or add to your Gemfile:

gem 'mail'

Basic Configuration

require 'mail'

# Configure Mail defaults
Mail.defaults do
  delivery_method :smtp, {
    address: 'smtp.lettermint.co',
    port: 587,
    user_name: 'lettermint',
    password: 'your-api-token',
    authentication: 'plain',
    enable_starttls_auto: true
  }
end

# Send email
mail = Mail.new do
  from     'sender@yourdomain.com'
  to       'recipient@example.com'
  subject  'Test Email'

  text_part do
    body 'Hello! This is a test email.'
  end

  html_part do
    content_type 'text/html; charset=UTF-8'
    body '<h1>Hello!</h1><p>This is a test email.</p>'
  end
end

mail.deliver!

Advanced Features

Multiple Recipients

mail = Mail.new do
  from     'sender@yourdomain.com'
  to       ['user1@example.com', 'user2@example.com']
  cc       'manager@yourdomain.com'
  bcc      'archive@yourdomain.com'
  subject  'Newsletter'
  body     '<h1>Monthly Update</h1>'
end

Attachments

mail = Mail.new do
  from     'sender@yourdomain.com'
  to       'recipient@example.com'
  subject  'Document Attached'
  body     'Please find the document attached.'

  add_file '/path/to/document.pdf'
  add_file filename: 'data.txt', content: 'Custom content'
end

Custom Headers

mail = Mail.new do
  from     'sender@yourdomain.com'
  to       'recipient@example.com'
  subject  'Custom Headers'
  body     'Email with custom headers.'

  header['X-Priority'] = '1'
  header['X-Custom-Header'] = 'Custom Value'
end

Rails Integration

In config/environments/production.rb:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: 'smtp.lettermint.co',
  port: 587,
  user_name: 'lettermint',
  password: ENV['LETTERMINT_API_TOKEN'],
  authentication: 'plain',
  enable_starttls_auto: true
}