# Resend

<figure><img src="https://2221554152-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPCf6vtFuZEPHXJd7JfIe%2Fuploads%2Fs2X5yYqAVKVZ938K8A0t%2FScreenshot%202025-01-13%20at%2017.03.30.png?alt=media&#x26;token=43ec0b62-4a2a-4386-9010-dd7de170cd7a" alt=""><figcaption></figcaption></figure>

{% hint style="success" %}
Recommended: Use the **code generator** for a 1-line setup from the terminal and skip all the manual setup 🚀  \
\
`bash generators/setup_resend.sh`&#x20;
{% endhint %}

***

Or follow these steps:

### Step 1: Create a Resend Account

1. Go to the [Resend website](https://resend.com).
2. Sign up and create an account to access your API key.

***

### Step 2: Add the Resend Gem

1. Open your `Gemfile`.
2. Add the Resend gem in your Gemfile:

   ```ruby
   gem "resend"
   ```
3. Run `bundle install` in your terminal to install the gem.

   ```bash
   bundle install
   ```

***

### Step 3: Configure Your API Key

1. Locate your API key from the Resend dashboard.
2. Add the API key to your `.env` file:

   ```env
   RESEND_API_KEY="re_***************"
   ```
3. Ensure you have the .env file setup as specified in the [quick](https://docs.lightningrails.com/getting-started/quickstart)[start](https://docs.lightningrails.com/getting-started/quickstart#create-.env-file) guide.

***

### Step 4: Set Up Action Mailer

1. **Development Environment**: Open `config/environments/development.rb` and set the delivery method to `:letter_opener` for testing emails locally (The Gem is already installed in the boilerplate):

   ```ruby
   config.action_mailer.delivery_method = :letter_opener
   ```
2. **Production Environment delivery method**: Open `config/environments/production.rb` and set the delivery method to `:resend`:

   ```ruby
   config.action_mailer.delivery_method = :resend
   ```
3. **API key in production**
   1. Create a new initializer file:  `touch app/config/initializers/mailer.rb`
   2. Paste your API key, and make sure your API key is set in your hosting provider:&#x20;

      <pre class="language-ruby"><code class="lang-ruby"><strong>Resend.api_key = ENV["RESEND_API_KEY"]
      </strong></code></pre>

***

### (Optional)  Welcome Email

### Step 5: Create Your First Mailer

1. Generate a new mailer:

   ```bash
   rails generate mailer UserMailer
   ```
2. Open the newly created file `app/mailers/user_mailer.rb` and define a mailer method. For example:

   ```ruby
   class UserMailer < ApplicationMailer
     def welcome_email
       @user = params[:user]
       mail(to: @user.email, subject: "Welcome to Our App!")
     end
   end
   ```

***

### Step 6: Add HTML Content for the Email

1. Create a corresponding view file for the mailer:

```
touch app/views/user_mailer/welcome_email.html.erb
```

* Path: `app/views/user_mailer/welcome_email.html.erb`
* Content example:

  ```html
  <h1>Welcome to Our App, <%= @user.name %>!</h1>
  <p>We’re excited to have you on board.</p>
  ```

***

### Step 7: Initialize and Send the Mailer

1. Open the Rails console:

   ```bash
   rails console
   ```
2. Initialize the mailer with a sample user object:

   ```ruby
   u = User.new(name: "Derich", email: "derich@example.com")
   mailer = UserMailer.with(user: u).welcome_email
   ```
3. Send the email:

   ```ruby
   mailer.deliver_now!
   ```
4. Add an auto-welcome message to welcome your users in `user.rb`

```
class User < ApplicationRecord
# [...]
  after_create :send_welcome_email

  def send_welcome_email
    UserMailer.with(user: self).welcome_email.deliver_now
  end
end
```

***

### Step 8: Verify the Email

* Check the recipient's inbox to confirm the email has been sent successfully.
* If testing in development, verify the email opens correctly using the `letter_opener` gem.

***

That's it! You’ve successfully set up the Resend Gem for sending transactional an marketing emails in your Lightning Rails project, you can enjoy 100 free emails per month.
