1. ホーム
  2. ruby-on-rails

railsコンソールからメールを送信する

2023-09-28 13:14:27

質問

本番サーバーのコンソールからメールを送信しようとしているのですが、送信されません。 なぜなのかがわかりません。 私はsendmailであなたの標準的な電子メールセットアップを持っています。 Mailer.deliver_メソッドを呼び出すと、これが返ってきました。

#<TMail::Mail port=#<TMail::StringPort:id=0x3fe1c205dbcc> bodyport=#<TMail::StringPort:id=0x3fe1c2059e00>>

EDIT: いくつかの情報を追加しました。

例えば、新しいユーザーがサインアップしたときに、彼らに "welcome" メールを送信するために、私のコントローラで次の行を持っています。

 Mailer.deliver_signup(@user, request.host_with_port, params[:user][:password])

これはうまくいきます。 私はコンソールから同じことを行うことができるはずだと思った、例えば

user = User.find(1)
Mailer.deliver_signup(user, "mydomainname.com", "password")

これを実行すると、Tmail::StringPortオブジェクトが戻ってきますが、メールは送信されないように見えます(これをテストするために自分自身にメールを送信しようとしています)。

私はubuntuサーバーにいますが、役に立つかもしれません。

どのように解決するのですか?

Railsのコンソールからメールを送信するためには、まずコンソールのアクションメーラー設定からこの設定を実行する必要があります。

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = {
  address: 'smtp.gmail.com', 
  port: 587, 
  domain: 'gmail.com',
  authentication: 'plain', 
  enable_starttls_auto: true, 
  user_name: '[email protected]',
  password: 'yourpassword'
}

その後、メール送信コードを実行すると、メールが配信されます。

UserMailer.activation_instructions(@user).deliver_now