Skip to main content
Resend Docs

Search documentation

Type to search this documentation.

On this pageOverview

Send emails using Rails with SMTP

Before you start, you'll need:

  1. Setup your environment

    Add these lines of code into your environment config file.

    config/environments/environment.rb
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
      :address   => 'smtp.resend.com',
      :port      => 465,
      :user_name => 'resend',
      :password  => ENV['RESEND_API_KEY'],
      :tls => true
    }
  2. Send email using Rails Action Mailer

    Then create a UserMailer class definition.

    app/mailers/user_mailer.rb
    class UserMailer < ApplicationMailer
      default from: 'Acme <onboarding@resend.dev>' # this domain must be verified with Resend
      def welcome_email
        @user = params[:user]
        @url = 'http://example.com/login'
        mail(to: ["delivered@resend.dev"], subject: 'hello world')
      end
    end

    And create your ERB email template.

    app/views/user_mailer/welcome_email.html.erb
    <!doctype html>
    <html>
      <head>
        <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
      </head>
      <body>
        <h1>Welcome to example.com, <%= @user.name %></h1>
        <p>You have successfully signed up to example.com,</p>
        <p>To log in to the site, just follow this link: <%= @url %>.</p>
        <p>Thanks for joining and have a great day!</p>
      </body>
    </html>

    Initialize your UserMailer class. This returns an ActionMailer::MessageDelivery instance.

    Ruby
    u = User.new name: "derich"
    mailer = UserMailer.with(user: u).welcome_email
    
    # => #<ActionMailer::MessageDelivery:153700, @mail_message=#<Mail::Message...>, @processed_mailer=...>

    Finally, you can now send emails using the deliver_now! method:

    Ruby
    mailer.deliver_now!
    
    # => {:id=>"a193c81e-9ac5-4708-a569-5caf14220539", :from=>....}

Rails SMTP Example

See the full source code.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu