私は Ruby on Rails を初めて使用し、Daniel Kehoe による Learn-ruby-on-rails という本に従っています。Ubuntu 環境で sengrid ログインの詳細を正しく設定しました。echo $ SENDGRID_USERNAME は自分のユーザー名を正しく返します。
ただし、連絡先フォームを送信すると、「SMTP-AUTH が要求されましたが、ユーザー名がありません」というエラーが表示されます。ログインの詳細をハードコーディングしようとしましたが、それでも同じエラーが発生します。私の構成設定はポート587のsmtp.sendgrid.netで、開発中のメールの送信を許可しています。
私が正しくないことをしてください。どうもありがとう。
私の user_mailer.rb は次のとおりです。
class UserMailer < ActionMailer::Base
#default :from => "do-not-reply@example.com"
def contact_email(contact)
@contact = contact
mail( to: => Rails.application.secrets.owner_email, from: => @contact.email, subject: => "Website Visit")
end
終わり
contact_controller.rb を以下に示します。
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(secure_params)
if @contact.valid?
UserMailer.contact_email(@contact).deliver_now
#TODO send message
flash[:notice] = "Message sent from #{@contact.name}."
redirect_to root_path
else
render :new
end
end
private
def secure_params
params.require(:contact).permit(:name, :email, :content)
end
終わり