0

我正在完全按照付费教程设置联系页面,当访问者填写表格并提交时,我,网站所有者,会收到一封包含他们的姓名、电子邮件和评论的电子邮件。目标是让我轻松点击回复并回复他们。

这对我来说似乎很奇怪,因为 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
4

2 回答 2

1

您可以在https://github.com/RailsApps/learn-rails克隆 git 存储库, 以从《 Learn Ruby on Rails 》一书中获取代码。您会看到代码按照实现的方式工作。

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

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代码设置了一个假的“发件人”,而真正的“发件人”是在从 Gmail 帐户发送电子邮件时设置的。

于 2014-02-04T01:42:35.323 回答
0

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

这里有很多关于正确设置 ActionMailer 的问题,但似乎您正在尝试发送邮件而不告诉它从哪里发送邮件。

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

如何配置动作邮件程序(我应该注册域)?

于 2014-02-03T19:12:33.030 回答