以下是我的控制器文件:
class BiodataController < ApplicationController
def store
@user=params[:username]
@age=params[:age]
@gender=params[:gender]
@mstatus=params[:mstatus]
@language=params[:language]
@email=params[:email]
@mobile=params[:mobile]
if params[:username].present? && params[:age].present? && params[:gender].present? && params[:mstatus].present? && params[:language].present? && params[:email].present? && params[:mobile].present?
Biodatum.create(name: @user, age: @age, gender: @gender, mstatus: @mstatus, language: @language, email: @email, mobile: @mobile)
Infomail.sendmail(@email)
render 'store'
else
render 'Error'
end
end
end
我的要求是向@email中存储的地址发送电子邮件。所以我创建了邮件程序&#39; Infomail&#39;。以下是我的邮件文件。
class Infomail < ApplicationMailer
default from: 'abc@xyz.co.in'
def sendmail(user)
@user = user
mail(to: @user.email, subject: 'sample mail')
end
end
我还在app / views / infomail / sendmail.html.erb&#39;下面有html文件。但它不起作用。任何人都可以解释我的错误是什么 我的代码。
答案 0 :(得分:0)
我建议你先看看http://guides.rubyonrails.org/action_mailer_basics.html作为初学者。
对于发送邮件,您必须使用deliver_now
(立即)或deliver_later
(工作队列)方法,如下所示:
InfoMailer.sendmail(@user).deliver_now
请注意,我将其重命名为InfoMailer
,因为这是邮寄者的标准命名。
答案 1 :(得分:0)
您正在发送@email
String
这是Object
段,而您期望.email
可以拨打@bio = Biodatum.create(name: @user, age: @age, gender: @gender, mstatus: @mstatus, language: @language, email: @email, mobile: @mobile)
Infomail.sendmail(@bio)
Biodatum
这会传递.email
实例,您可以在其上调用def sendmail(bio)
@bio = bio
mail(to: @bio.email, subject: 'sample mail')
end
另外,为了避免混淆,您可以更改邮件程序方法
sendmail.html
如果您要进行这些更改,则还需要在/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
}
SELECT '0-100' AS NUM,
SUM(CASE WHEN NUM <= 100 THEN CNT ELSE 0 END) AS CNT
FROM tableName
UNION
SELECT '100-400' AS NUM,
SUM(CASE WHEN NUM > 100 THEN CNT ELSE 0 END) AS CNT
FROM tableName
答案 2 :(得分:0)
如果您想测试邮件进入开发环境,只需打开您的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设置更改以上配置。 现在根据您的要求创建邮件的tamp let。文件路径如下: app - &gt;查看 - &gt; common_mailer里面的这个请发sendmail.html.erb文件。