我目前正在通过 sendgrid 发送电子邮件,目前正在向新用户发送电子邮件。...但奇怪的是,非常相似的电子邮件选项不起作用 - 包括收件人在内的完整电子邮件显示在日志中,但从未收到。
这是我所拥有的:
在初始化程序的 mail.rb 文件中:
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => configatron.sendgrid.username,
:password => configatron.sendgrid.password,
:domain => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp
用户名和密码在别处定义 - 它们被确认具有正确的值
当新用户注册时,我调用我的 UserMailer 类并执行以下操作:
def welcome_email(user)
@email = user.email
@name = user.full_name
mail(to: @email, subject: "Welcome!")
end
工人只需执行以下操作即可调用它:
UserMailer.welcome_email(user).deliver
这很有效;我收到了电子邮件,就是这样。
但是当我尝试用不同的方法发送一封电子邮件时,事情就神奇地崩溃了。
在 SAME UserMailer 类中:
def request(org, recipient, item)
@org = org
@recipient = recipient
@item = item
mail(to: @org.email, subject: "A new request has been posted!")
end
使用 SAME 函数(虽然这次是在工作人员之外,所以我可以轻松调试):
UserMailer.request(org, recipient, item).deliver
电子邮件完美地出现在终端中:
Sent mail to mypersonalemail@test.com (4717ms)
Date: Mon, 31 Dec 2012 01:03:35 -0800
From: mysendingemail@test.com
To: mypersonalemail@test.com
Message-ID: <[longhexstring]@localhost.localdomain.mail>
Subject: A new request has been posted!
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_50e154e769903_3c41bba7ec576d5";
charset=UTF-8
Content-Transfer-Encoding: 7bit
----==_mimepart_50e154e769903_3c41bba7ec576d5
Date: Mon, 31 Dec 2012 01:03:35 -0800
Mime-Version: 1.0
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <[longhex]@localhost.localdomain.mail>
Hello world!
----==_mimepart_50e154e769903_3c41bba7ec576d5
Date: Mon, 31 Dec 2012 01:03:35 -0800
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <[longhex]@localhost.localdomain.
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
<p>
Hello world!
</p>
</body>
</html>
但是,我查看了我的个人电子邮件、垃圾邮件、垃圾箱的收件箱,但什么也没收到。甚至 sendgrid 也没有我请求发送请求电子邮件的日志!但是欢迎电子邮件工作得很好,甚至可以通过 sendgrid 记录下来。我看不出是什么可能导致一组电子邮件发送而另一组电子邮件发送,这真的令人困惑。没有明显的语法错误出现在我身上,我使用的值是正确的数据类型而不是 nil。
对于这个奇怪问题的任何帮助将不胜感激。