実稼働サーバーのコンソールからメールを送信しようとしていますが、送信されません。理由がわかりません。 sendmailを使用した標準的なメール設定のみがあります。 Mailer.deliver_メソッドを呼び出すと、これが返されます:
#<TMail::Mail port=#<TMail::StringPort:id=0x3fe1c205dbcc> bodyport=#<TMail::StringPort:id=0x3fe1c2059e00>>
編集:さらに情報を追加しました:
したがって、たとえば、新しいユーザーがサインアップすると、「ようこそ」メールを送信するために、コントローラーに次の行があります。
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 Consoleからメールを送信するには、まずアクションメーラー設定のためにこの設定をコンソールで実行する必要があります。
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
より速いバージョン:
ActionMailer::Base.mail(
from: "[email protected]",
to: "[email protected]",
subject: "Test",
body: "Test"
).deliver_now
今朝、同じような問題に遭遇しましたRails 3アプリ:
UserMailer.activation_instructions(@user)
これによりデータが提供されましたが、電子メールは送信されませんでした。送信するために、私は電話しました:
UserMailer.activation_instructions(@user).deliver
これでうまくいきました。うまくいけば、これもあなたのために働くかもしれません!
あなたがやろうとしていることを理解していれば、私は100%ではありません。
インターネットに電子メールを送信する場合は、適切な電子メールサーバーにそれらの電子メールを転送するようにsendmailを構成する必要があります。使用するUbuntuリリースに応じて、パッケージを再構成するだけでこれを実行できます。
また、sendmailの代わりにprocmailを使用するかどうかを考えるかもしれません。
以下を使用して、電子メール構成を再構成できます。
dpkg-reconfigure sendmail
そのパッケージを使用する場合は、代わりにprocmailを使用してください。構成ダイアログには、すべてのメールを適切な電子メールサーバーに転送するように構成できるオプションがあります。ただし、認証が必要な場合、またはそのサーバーがサーバーからの電子メールのみを受け入れるかどうかを考える必要があります。