JavaScriptを有効にしてください

【Elixir】Bambooを使って簡単にメール送信する方法

 ·  ☕ 2 分で読めます

【Elixir】Bambooを使って簡単にメール送信する方法

Elixir で Bamboo を使って簡単にメール送信する方法。

メール送信を行う Bamboo のドキュメントはこちらです。

Bamboo はさまざまなアダプターが用意されていていますが、今回はSMTPでの送信方法のサンプルをご紹介します。

環境

  • Elixir 1.14.2
  • Bamboo 2.2.0
  • Bamboo SMTP 4.2.2

Bamboo のインストール方法

Bamboo をプロジェクトに追加するには、mix.exs ファイルの deps 関数に Bamboo を追加します。

1
2
3
4
5
6
def deps do
  [
      {:bamboo, "~> 2.2.0"},
      {:bamboo_smtp, "~> 4.2.2"}
  ]
end

その後、ターミナルで mix deps.get コマンドを実行して、Bamboo をインストールします。

使用方法

設定

SMTPのメール送信設定を行います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Mail Setting
config :demo, Demo.Mailer,
  adapter: Bamboo.SMTPAdapter,
  server: "smtp.example.com",
  port: 587,
  username: "your_username",
  password: "your_password",
  tls: :if_available,
  ssl: false,
  retries: 1

僕はローカルで mailhog を使っているので dev.exs に以下のような設定を入れております。
mailhog のポートは 1025

1
2
3
4
5
config :demo, Demo.Mailer,
  adapter: Bamboo.SMTPAdapter,
  server: "mailhog",
  port: 1025,
  tls: :none

モジュールの作成

メーラーモジュールを作成します。

1
2
3
defmodule Demo.Mailer do
  use Bamboo.Mailer, otp_app: :demo
end

メール作成関数の作成

メール作成するための関数を定義します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
defmodule Demo.Email do
  import Bamboo.Email

  def welcome_email(to_email) do
    new_email()
    |> to(to_email)
    |> from("from@example.com")
    |> subject("Welcome to MyApp!")
    |> text_body("Hello! Thanks for joining MyApp.")
    |> html_body("<strong>Hello!</strong> Thanks for joining MyApp.")
  end
end

メール送信実行

以下のコードでメール送信が可能です。

alias Demo.Email
alias Demo.Mailer

email = Email.welcome_email("to@example.com")
Mailer.deliver_later(email)

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer