Mailform 在本地工作,但不在生产环境中(Heroku、Rails)

Posted

技术标签:

【中文标题】Mailform 在本地工作,但不在生产环境中(Heroku、Rails)【英文标题】:Mailform works locally but not in production (Heroku, Rails) 【发布时间】:2021-12-08 04:28:36 【问题描述】:

快速提问,我在 Rails 应用程序上使用 Mailform gem。从我的 Rails 应用程序提交联系表在本地工作,但在生产中不起作用(Heroku)。

使用 heroku logs --tails ,我看到 Heroku 成功发送了邮件。但是我没有在我各自的收件箱、垃圾邮件、垃圾邮件等中收到它。您可以在下面看到 Heroku 说邮件已成功发送:

2021-10-21T10:18:10.113426+00:00 app[web.1]: I, [2021-10-21T10:18:10.113404 #4]  INFO -- : [fc7bc81d-de05-43c8-8c0c-b0f865d3b385]   Parameters: "authenticity_token"=>"AEQA5AFuDM1Z9kJkxIjONKSykC3byTzKiRIajUwBZJBa/ZGTQhm13NSOI3Gni+no1U2svV/PB1mRXDFct31ZXQ==", "contact"=>"name"=>"Somes Name", "email"=>"username@gmail.com", "subject"=>"site test", "message"=>"This is a test email", "commit"=>"Send Message"
2021-10-21T10:18:10.114201+00:00 app[web.1]: I, [2021-10-21T10:18:10.114166 #4]  INFO -- : [fc7bc81d-de05-43c8-8c0c-b0f865d3b385] Redirected to https://iliazolas.herokuapp.com/
2021-10-21T10:18:10.119363+00:00 app[web.1]: I, [2021-10-21T10:18:10.119311 #4]  INFO -- : [fc7bc81d-de05-43c8-8c0c-b0f865d3b385]   Rendering vendor/bundle/ruby/2.7.0/gems/mail_form-1.9.0/lib/mail_form/views/mail_form/contact.erb
2021-10-21T10:18:10.120596+00:00 app[web.1]: I, [2021-10-21T10:18:10.120551 #4]  INFO -- : [fc7bc81d-de05-43c8-8c0c-b0f865d3b385]   Rendered vendor/bundle/ruby/2.7.0/gems/mail_form-1.9.0/lib/mail_form/views/mail_form/contact.erb (Duration: 1.2ms | Allocations: 710)
2021-10-21T10:18:10.121033+00:00 app[web.1]: D, [2021-10-21T10:18:10.120974 #4] DEBUG -- : [fc7bc81d-de05-43c8-8c0c-b0f865d3b385] MailForm::Notifier#contact: processed outbound mail in 4.7ms
2021-10-21T10:18:10.285048+00:00 app[web.1]: I, [2021-10-21T10:18:10.284947 #4]  INFO -- : [fc7bc81d-de05-43c8-8c0c-b0f865d3b385] Delivered mail 61713e621dad0_494c09453@10e20764-9922-42fe-bc81-e7fd2761d078.mail (163.8ms)
2021-10-21T10:18:10.285081+00:00 app[web.1]: D, [2021-10-21T10:18:10.285045 #4] DEBUG -- : [fc7bc81d-de05-43c8-8c0c-b0f865d3b385] Date: Thu, 21 Oct 2021 10:18:10 +0000
2021-10-21T10:18:10.285081+00:00 app[web.1]: From: Ilia Zolas <username@gmail.com>
2021-10-21T10:18:10.285082+00:00 app[web.1]: To: username@gmail.com
2021-10-21T10:18:10.285082+00:00 app[web.1]: Message-ID: <61713e621dad0_494c09453@10e20764-9922-42fe-bc81-e7fd2761d078.mail>
2021-10-21T10:18:10.285082+00:00 app[web.1]: Subject: IZ Portfolio Contact Form
2021-10-21T10:18:10.285083+00:00 app[web.1]: Mime-Version: 1.0
2021-10-21T10:18:10.285083+00:00 app[web.1]: Content-Type: text/html;
2021-10-21T10:18:10.285083+00:00 app[web.1]: charset=UTF-8
2021-10-21T10:18:10.285084+00:00 app[web.1]: Content-Transfer-Encoding: 7bit
2021-10-21T10:18:10.285084+00:00 app[web.1]: 
2021-10-21T10:18:10.285084+00:00 app[web.1]: <h4 style="text-decoration:underline">IZ Portfolio Contact Form</h4>
2021-10-21T10:18:10.285085+00:00 app[web.1]: 
2021-10-21T10:18:10.285085+00:00 app[web.1]: 
2021-10-21T10:18:10.285085+00:00 app[web.1]: <p><b>Name:</b>
2021-10-21T10:18:10.285085+00:00 app[web.1]: Name</p>
2021-10-21T10:18:10.285085+00:00 app[web.1]: 
2021-10-21T10:18:10.285085+00:00 app[web.1]: <p><b>Subject:</b>
2021-10-21T10:18:10.285086+00:00 app[web.1]: site test</p>
2021-10-21T10:18:10.285086+00:00 app[web.1]: 
2021-10-21T10:18:10.285086+00:00 app[web.1]: <p><b>Email:</b>
2021-10-21T10:18:10.285086+00:00 app[web.1]: username@gmail.com</p>
2021-10-21T10:18:10.285086+00:00 app[web.1]: 
2021-10-21T10:18:10.285087+00:00 app[web.1]: <p><b>Message:</b>
2021-10-21T10:18:10.285087+00:00 app[web.1]: This is a test email</p>
2021-10-21T10:18:10.285087+00:00 app[web.1]: 
2021-10-21T10:18:10.285087+00:00 app[web.1]: 
2021-10-21T10:18:10.285102+00:00 app[web.1]: Message sent

请注意,我已将我的实际电子邮件地址替换为用户名@gmail 和此帖子的名称。

另外,我已将相关的 Google 帐户设置为允许访问不太安全的应用程序。

这是我的mailform生产环境:

  config.action_mailer_default_url_options =  host: 'https://www.iliazolas.herokuapp.com' 
  Rails.application.routes.default_url_options[:host] = 'https://www.iliazolas.herokuapp.com'
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = false
  config.action_mailer.default charset: 'utf-8'
  config.action_mailer.smtp_settings = 
  address: 'smtp.gmail.com',
  port: 587,
  domain: 'gmail.com',
  authentication: 'plain',
  enable_starttls_auto: true,
  user_name: ENV['GMAIL_USERNAME'],
  password: ENV['GMAIL_PASSWORD']

有人对我做错了什么有任何想法吗?

再次感谢您的时间和精力!

【问题讨论】:

【参考方案1】:

所以我就相关的 gmail 凭据重新登录了我的 google 帐户。事实证明,无论是否允许访问不太安全的应用程序,谷歌仍然将我的应用程序的操作视为可疑活动。

所以我所做的只是通知谷歌可疑活动来自我自己使用提供的界面以及更改我的帐户密码并使用新密码更新了我的 .env 文件。

然后...突然之间...从我网站上的联系表单发送的消息开始起作用了。

瞧 :)

【讨论】:

我决定停止使用 gmail 来提供我的电子邮件凭据。几天后,谷歌开始再次将我的测试视为可疑,这真的很烦人。可能会使用我的托管平台中提供的邮件凭据运行。

以上是关于Mailform 在本地工作,但不在生产环境中(Heroku、Rails)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Sanctum 不在生产服务器上工作,但在本地工作

Laravel 视图在生产中工作但不在本地

cors 在本地主机上工作,但不在生产上

DJango 邮件在本地工作但不在生产中

API调用代码在本地主机上工作但不在服务器上

指令/工厂不在生产中工作