# Resend

<figure><img src="/files/Cko6Y1bnzxV8VxhZgnCX" 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](/getting-started/quickstart.md)[start](https://docs.lightningrails.com/features-setup/automatic-emails/pages/CyH2xJQs9yWJ1S8BYNav#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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lightningrails.com/features-setup/automatic-emails/resend.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
