4

rails3 webappであるdiscourseをセットアップしようとしていますが、gmailsmtpサーバーでsmtpを構成する際に問題が発生します。

昨日新しいGmailアカウントを登録しましたが、ブラウザとメールクライアントソフトウェアにログインできます。

次に、ファイルで談話を構成しますconfig/environments/production.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address   => "smtp.gmail.com",
  :port      => "587",
  :user_name => "smtp4shuzu@gmail.com",
  :password  => "12345678",
  :authentication => :plain,
  :domain => "shuzhu.org",
  :enable_starttls_auto => true
}

sidekiqバックグラウンドでメールを送信するために使用されるを開始します。

nohup bundle exec sidekiq > log/sidekiq.log 2>&1 &

次に、プロダクションモードで談話を開始します。

rails server -e production -d

しかし、それは機能しません。私はいくつかのエラーを見ることができますsidekiq.log

2013-03-01T03:06:02Z 30687 TID-qib28警告:{"retry" => true、 "queue" => "default"、 "class" => "Jobs :: UserEmail"、 "args" => [ {"type" => "signup"、 "user_id" => 42、 "email_token" => "b40a21ece2b14586e346abfd96685975"、 "current_site_id" => "default"}]、 "jid" => "558bb6bd5aa36cfc8d3d1e91"、 "error_message" = > "接続が拒否されました-connect(2)"、 "error_class" => "Errno :: ECONNREFUSED"、 "failed_at" => 2013-03-01 03:06:02 UTC、 "retry_count" => 0} 2013-03 -01T03:06:02Z 30687 TID-qib28警告:接続が拒否されました-connect(2)2013-03-01T03:06:02Z 30687 TID-qib28警告:/home/discourse/.rvm/rubies/ruby-1.9.3- p385 / lib / ruby​​ / 1.9.1 / net/smtp。rb:540:in initialize' /home/discourse/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/net/smtp.rb:540:inopen'/home/discourse/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/net/smtp.rb:540:in `tcp_socket'

あらゆる種類のSMTP設定を試しましたが、どれも機能しません。


更新

@Basilの答えによると、私はちょうど試しました:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address   => "smtp.gmail.com",
  :port      => 587,
  :user_name => "smtp4shuzu",
  :password  => "12345678",
  :authentication => "plain",
  :enable_starttls_auto => true
}

しかし、同じエラーがあります。ドメインshuzu.orgは私のサイトのドメインであり、SMTPに渡す必要があると考えていました。今、私はそれを削除しましたが、それでも機能していません。

4

5 に答える 5

5

ついに、私は(愚かな)理由を見つけました。

sidekiq本番モードで開始する必要があります。

nohup bundle exec sidekiq -e production > log/sidekiq.log 2>&1 &
于 2013-03-01T17:35:06.913 に答える
3

ポートの周りの引用符を削除してみてください

  :port      => 587,

また、メールアドレスが@gmailであるのに、ドメインが@shuhzuである理由がわかりません... SMTP設定では、メールアカウントのドメインが表示されます。カスタムGmail、つまりme@custom.comがある場合、ドメインはcustom.comになります。カスタムメールアドレスをお持ちの場合、ドメインのSMTP設定の例を次に示します。

{
    :address => "smtp.gmail.com",
    :port => 587 ,
    :domain => "custom.com",
    :user_name => "some_email@custom.com",
    :password => "some_password",
    :authentication => "plain",
    :enable_starttls_auto => true
}
于 2013-03-01T05:42:45.330 に答える
1

次の行のコメントを外すと便利な場合があります/var/discourse/containers/app.yml

 ## If you want to set the 'From' email address for your first registration, uncomment and change:
 ## After getting the first signup email, re-comment the line. It only needs to run once.
  - exec: rails r "SiteSetting.notification_email='noreply@YOURDOMAIN.com'"

ここに、Discourseのすべての電子メールが送信される代わりのアドレスを入力する必要があります。デフォルトでは、Discourseはフォーラムのドメイン名を使用しようとしますが、SMTPで許可されていない場合があります。たとえば、フォーラムはにforum.example.comありますが、GmailSMTPはからのメールのみを許可しますexample.com

認証なしのSMTPの場合、認証フィールドは次のようにしておきます。

  DISCOURSE_SMTP_USER_NAME:
  DISCOURSE_SMTP_PASSWORD:

そしてすべてが保存された後:

./launcher rebuild app

メールが機能するようになったら、この行を(で)コメントし直すことができますSiteSetting

これはコンソールから設定することもできますがSiteSetting、1行のコメントを解除/再コメントしてコンテナを再構築するよりも難しいため、これについては詳しく説明しません。

于 2018-10-15T14:07:40.643 に答える
0

事前に作成されたイメージのもの(Bitnami)の1つである私のインストールでは、これを実行する必要がありました。

/opt/discourse-0.9.5-0/ctlscript.sh start discourse_sidekiq

起動時に発生するようにこれを自動化する方法を知っている人はいますか?

于 2013-09-18T16:28:50.460 に答える
0

サイトサーバー上の自分のubuntuフィジカルのDockerコンテナに新しい談話インスタンスを設定し、app.ymlを編集して次のものを含めました。

DISCOURSE_SMTP_ADDRESS: 'smtp.gmail.com'
DISCOURSE_SMTP_AUTHENTICATION: 'plain'
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: 'my.name@gmail.com'
DISCOURSE_SMTP_PASSWORD: 'myPa$$word'
DISCOURSE_SMTP_ENABLE_START_TLS: true

そしてそれはうまくいった。戦いの半分は、単一引用符(')をどこに置くか、どこに置かないかを知っていました。

別の方法も利用できました。ISPは静的IPの顧客にリレーSMTPを提供しているため、app.yamでこれを使用しました。

DISCOURSE_SMTP_ADDRESS: mail.myisp.tld
DISCOURSE_SMTP_AUTHENTICATION: none
DISCOURSE_SMTP_PORT: 25

そしてそれは私にとってもうまくいきます。

于 2015-10-12T23:46:01.177 に答える