我有一个表单,允许用户输入他们的姓名,电子邮件添加,主题和消息。当用户点击SEND时,该消息应该发送给我(管理员)。 我的开发配置下有这个代码...
config.action_mailer.delivery_method = :smtp
# SMTP settings for gmail
config.action_mailer.smtp_settings = {
:address => @user.email,
:port => 587,
:user_name => ENV['sys.questdentalusa@gmail.com'],
:password => ENV['passwordhere'],
:authentication => 'plain',
:enable_starttls_auto => true
}
和我的user_mailer下的代码
def welcome_email(user)
@user = user
mg_client = Mailgun::Client.new ENV['api_key']
message_params = {:from => ENV[@user.email],
:to => 'sys.questdentalusa@gmail.com',
:subject => @user.subject,
:text => @user.text}
mg_client.send_message ENV['domain'], message_params
end
它不会发送消息。就好像它没有执行一样。 规则是,不应涉及任何模型。 例如,您有一个现有的Gmail帐户并写了一封发给我的邮件。我应该从您输入的Gmail帐户收到您的消息。
答案 0 :(得分:0)
developer config
和message_params
看错了两件事,
message_params
中的::from => ENV[@user.email]
应该与@user.email
smtp_settings
中的::address => @user.email,
与"smtp.mailgun.org"
类似。在here
答案 1 :(得分:0)
我现在得到了相当一段时间的答案,我决定不妨在这里分享。这就是我在development.rb中所做的。
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
user_name: "sys.questdentalusa@gmail.com",
password: "passwordhere",
authentication: :plain,
enable_starttls_auto: true
}
这是我在Mailer下的内容
class MessageMailer < ActionMailer::Base
default from: "sys.questdentalusa@gmail.com"
default to: "questdentalusa@gmail.com"
def new_message(contact)
@contact = contact
mail subject: 'Inquiry from website: ' + @contact[:subject]
end
end
我在new_message.text.erb
下得到了这个Name: <%= @contact[:name] %>
Email: <%= @contact[:email] %>
Message: <%= @contact[:content] %>
这是我的控制器
class HomeController < ApplicationController
skip_before_filter :verify_authenticity_token
def send_mail
if MessageMailer.new_message(contact_params).deliver
redirect_to contact_path
flash[:notice] = 'Your messages has been sent.'
end
end
private
def contact_params
params.require(:contact).permit(:name, :email, :subject, :content)
end
end