0

に電子メールを送信する方法次の私のコントローラファイルです。だから私は「Infomail」としてメーラーを作った。私のメーラーファイルは次のとおりです。レール

class Infomail < ApplicationMailer 
    default from: '[email protected]' 

    def sendmail(user) 
     @user = user 
     mail(to: @user.email, subject: 'sample mail') 
    end 
end 

また、「app/views/infomail/sendmail.html.erb」の下にhtmlファイルもあります。しかし、それは動作しません。誰でも私のコードで のバグを教えてください。

+0

ここで 'Infomail.sendmail(@email)'は電子メールを作成しますが、何もしません。これを試してください: 'Infomail.sendmail(@email).deliver_now'。また、環境設定でメール設定を確認してください。 – lcguida

答えて

0

最初にhttp://guides.rubyonrails.org/action_mailer_basics.htmlをご覧ください。それが標準だから、私はInfoMailerにそれを改名さ

InfoMailer.sendmail(@user).deliver_now 

注:

メールを送信するために、あなたは、メソッド(労働者のためのキュー)deliver_now(即時)またはdeliver_laterを使用するので、同じようにする必要がありますメーラーの名前。

+0

エラーは "[email protected]"の "未定義メソッド'電子メール "として表示されます:文字列" – mrg

+0

これは、文字列を '@ user'として渡し、' @ bio'を渡さないためです。 –

0

あなたはこれがあなたが避けるためにも.email

を呼び出すことができますどのBiodatumインスタンスを渡します.email

@bio = Biodatum.create(name: @user, age: @age, gender: @gender, mstatus: @mstatus, language: @language, email: @email, mobile: @mobile) 
Infomail.sendmail(@bio) 

を呼び出すことができますどのObjectを期待している間、あなたはのparamsでStringある@emailを送信していますあなたのメーラーの方法を変更することができます。

def sendmail(bio) 
    @bio = bio 
    mail(to: @bio.email, subject: 'sample mail') 
end 

あなたはこれらの変更を行う場合は、あなたも、あなたがしたい場合は、/config/environments/development.rb/config/environments/production.rb

config.action_mailer.delivery_method = :smtp 
# SMTP settings for gmail 
config.action_mailer.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :user_name   => ENV['gmail_username'], 
    :password    => ENV['gmail_password'], 
    :authentication  => "plain", 
    :enable_starttls_auto => true 
} 
+0

どのように"to"アドレスです。 @bioには名前、年齢、性別などの多くの詳細が含まれているので... – mrg

+0

メーラーの '@ bio'で' .email'を呼び出しています---> '@ bio.email' –

+0

"ストア "ページ。しかし、メールを送信しません。 – mrg

1

の設定を構成していることを確認してくださいsendmail.html

EDIT

でそれらを変更する必要がありますあなたの開発環境にmailerをテストするだけで、あなたのdevelopment.rbファイルを開き、smtpの設定のために以下のコードを書くだけです。

config.action_mailer.default_url_options = { host: 'url of your application' } 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    address:    'address of your mailer', 
    port:     465, 
    domain:    ENV['YOUR_DOMAIN_NAME'], 
    user_name:   ENV['YOUR_USER_NAME'], 
    password:    ENV['YOUR_PASSWORD'], 
    authentication:  :plain, 
    ssl:     true, 
    tls:     true, 
    enable_starttls_auto: true 
    } 

あなたのメーラーsmtp設定に従って上記の設定を変更してください。 あなたの要件に合わせてメールを作成しましょう。以下のようなファイルパス: app - > view - > common_mailerの中にあるsendmail.html.erbファイルを作成してください。

+0

2番目のステップで行う必要がない場合は、ActionMailer :: BaseでInfomailを直接継承してください。以下の通り: クラスInfomail