質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Ruby

    9615questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    9026questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

「アカウント有効化」できなくて困っています(railsチュートリアル)

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,674

yamady

score 163

Ruby on Railsチュートリアル第11章「アカウントの有効化」できなくて困っています。
チュートリアルに沿って、進めてきたのですがSendGridからメールが送られてこないエラーが発生しました。

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true
  config.action_mailer.default :charset => "utf-8"
  host = 'localhost:3000'
  config.action_mailer.default_url_options = { host:'localhost', port: '3000' }
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '587',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'localhost:3000',
    :enable_starttls_auto => true
  }

上記を「development.rb」にて設定したはずなのですが、一向に動く気配がありません。。実際の登録画面でアカウント登録をすると、下記のエラーが発生してしまいます。

Net::SMTPFatalError in UsersController#create
550 Unauthenticated senders not allowed
Extracted source (around line #52):

・・・
  # 有効化用のメールを送信する
  def send_activation_email
    UserMailer.account_activation(self).deliver_now
  end

  private

    # メールアドレスをすべて小文字にする
    def downcase_email
      self.email = email.downcase
    end

    # 有効化トークンとダイジェストを作成および代入する
    def create_activation_digest
      self.activation_token  = User.new_token
      self.activation_digest = User.digest(activation_token)
    end
end

下記にエラーがあるみたいです。。

(users_controller.rb)

・・・
  def create
    @user = User.new(user_params)
    if @user.save
      @user.send_activation_email
      flash[:info] = "Please check your email to activate your account."
      redirect_to root_url
    else
      render 'new'
    end
  end
・・・

(User.rb)

・・・
  # アカウントを有効にする
  def activate
    update_attribute(:activated,    true)
    update_attribute(:activated_at, Time.zone.now)
  end

  # 有効化用のメールを送信する
  def send_activation_email
    UserMailer.account_activation(self).deliver_now
  end
・・・

何度も申し訳ありませんが、お助けくださいませ。
どうぞよろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

問題が修正されたので改めて

550 Unauthenticated senders not allowed 

は ID, Password が認証できなかったときのみ返すエラーです。
ちゃんと環境変数SENDGRID_USERNAME, SENDGRID_PASSWORDはセットしてありますか?

http://stackoverflow.com/questions/28642435/how-to-send-an-email-in-development-with-actionmailer-sendgrid
にSendGridのサポートに問い合わせた結果があります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/02 15:48

    何度もご回答いただき、ありがとうございます。
    環境変数は
    :user_name => ENV['***********@kke.com'],
    :password => ENV['*************'],
    と設定しているのですが、やはり下記のエラーとなってしまいました。

    550 Unauthenticated senders not allowed
    # 有効化用のメールを送信する
    def send_activation_email
    UserMailer.account_activation(self).deliver_now
    end

    private

    キャンセル

  • 2017/05/02 15:52

    ENV['SENDGRID_USERNAME'] の SENDGRID_USERNAMEの部分を書き換えてはいけません。

    :user_name => 'あなたのid',
    :password => 'あなたのpassword',

    とするか、Consoleから set SENDGRID_USERNAME=あなたのID と設定してください

    キャンセル

  • 2017/05/02 16:05

    ありがとうございます。メールが届きました!
    届いた瞬間、感動しました(涙)
    プログラミングを始めて本当によかったと思えました。ありがとうございます!!

    キャンセル

+1

config.action_mailer.delivery_method = :test

:test だと ActionMailer::Base.deliveries へメールの内容が保存されます。
実際には送信されません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/01 16:57

    ご回答いただき、ありがとうございます。
    こちら:test→ :smtpに変更したのですが、解決しませんでした。

    キャンセル

同じタグがついた質問を見る

  • Ruby

    9615questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    9026questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。