Rails联系表单发送电子邮件给我自己

时间:2014-02-03 18:52:06

标签: ruby-on-rails email actionmailer contact-form learn-ruby-on-rails

我正在准确地关注paid tutorial并设置一个联系页面,当访问者填写表单并提交时,我,网站所有者,收到一封包含他们姓名,电子邮件和评论的电子邮件。目标是让我轻松点击回复并回复它们。

这对我来说似乎很奇怪,因为很奇怪ActionMailer让你能够从别人的电子邮件帐户发送,而这些帐户没有定义任何SMTP设置。实际上,按照本教程,我不需要声明任何SMTP设置。

但它不起作用...会喜欢一些故障排除帮助。

我的邮件代码:

class UserMailer < ActionMailer::Base

def contact_email(contact) 
    @contact = contact 
    mail(to: jdong8@gmail.com, from: @contact.email, :subject => "New message at JamesDong.com") 
end 

控制器代码段:

def create
    @contact= Contact.new(secure_params)
    if @contact.save
      UserMailer.contact_email(@contact).deliver

2 个答案:

答案 0 :(得分:1)

你可以克隆git repo https://github.com/RailsApps/learn-rails 从书Learn Ruby on Rails获取代码。您将看到代码按实现方式工作。

如果查看示例代码,则会在文件config / environments / development.rb和config / environments / production.rb中配置SMTP设置。

config.action_mailer.smtp_settings = {
  address: "smtp.gmail.com",
  port: 587,
  domain: "example.com",
  authentication: "plain",
  enable_starttls_auto: true,
  user_name: ENV["GMAIL_USERNAME"],
  password: ENV["GMAIL_PASSWORD"]
}

GMAIL_USERNAME和GMAIL_PASSWORD设置邮件的SMTP来源。

UserMailer代码仅创建(部分)电子邮件的标题和正文。将显示“from”和“to”,仅供外观使用。查看原始电子邮件消息,您将看到完整的标题集,显示电子邮件的真实来源。

因此,简而言之,UserMailer代码设置了一个虚假的“from”,并且当从Gmail帐户发送电子邮件时设置了真正的“from”。

答案 1 :(得分:0)

我可能在这里错了,但根据我在Rails中的经验,这是不可能的,您需要为要发送邮件的帐户设置SMTP设置。

这里有很多问题指的是正确设置ActionMailer,但似乎你试图发送邮件而不告诉它从哪里发送邮件。

如果这是你的问题,这个问题和最佳答案可能会有所帮助:

How to configure action mailer (should I register domain)?