1

ActionMailerを使用してメールを送信するRailsプロジェクトがあります。これはlocalhost:3000の「railsserver」で正常に機能するようですが、powを使用すると、SMTPサーバーから認証エラーメッセージが表示されます。これは環境変数と関係があると思います。これが設定コードです

 config.action_mailer.smtp_settings = {
 address: "smtp.gmail.com",
 port: 587,
 domain: "railscasts.com",
 authentication: "plain",
 enable_starttls_auto: true,
 user_name: ENV["GMAIL_USERNAME"],
 password: ENV["GMAIL_PASSWORD"]
}

私はマウンテンライオンにいます。

ありがとう

4

3 に答える 3

2

私は別の提案があります:

開発では、 letter_openerを使用するだけです。とにかく、実際に電子メールを送信するよりも、そのコンテキストでの方が便利です。

本番環境では、GMailではなくSendGridを使用します。SendGridは素晴らしく、セットアップは本当に簡単です。

于 2013-02-07T19:14:29.227 に答える
2

Powは、アプリケーションルートの2つのファイルをチェックすることで環境変数をロードします

  1. .powrc
  2. .powenv

touchコマンドを使用して.powrcファイルを作成し、環境変数を追加しました

export GMAIL_USERNAME=username
export GMAIL_PASSWORD="my password"

次に、次の方法でアプリのワーカーを再起動しました。

touch tmp/restart.txt

電子メールが機能するようになりました。

于 2013-02-15T06:05:58.520 に答える
1

blamattinaが示唆しているように、それは設定ファイルのドメインと関係があるかもしれません!Ruby on Railsガイドのによると:

Gmailと互換性のある正しい構成は次のようになります。

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address              => "smtp.gmail.com",
:port                 => 587,
:domain               => 'baci.lindsaar.net',
:user_name            => '<username>',
:password             => '<password>',
:authentication       => 'plain',
:enable_starttls_auto => true  }

あなたdomainはに設定されていrailscasts.comます。それがあなたのウェブサイトでない限り、私の推測では、このドメインは正しくありません。実際、それは明らかにオプションでもあります。

このStackOverflowは、プラグインがかつて必要だったことを詳しく説明していますが、Rails3.2以降を使用している場合は不要になりました。記事のトップアンサーの下にあるコメントは、domainがオプションであることを詳しく説明しています。

更新:あなたが説明したエラーに基づいて、認証エラーが発生しているようです!これは、ログインクレデンシャルが正しく登録されていないことが原因である可能性があります。

このユーザーはHerokuを使用するコンテキストで質問していますが、エラーは同じです。アプリがRailsサーバーで正しく動作するが、Powでは動作しない場合は、サーバー側のセットアップの問題です。ENVこのソリューションでは、サーバーで機能するように(環境)変数を適切に設定する必要があります。

于 2013-02-07T16:13:08.647 に答える