我构建了一个自定义rake任务来向我的用户发送电子邮件,但我希望在发送之前先测试该电子邮件。
我有这个rake文件:
namespace :send_out do
task :generate_url => :environment do
SignedUser.all.each do |user|
#user.build_invitation
#user.generate_url
end
end
task :email => :environment do
#SignedUser.all.each do |user|
UserMailer.email.deliver
#end
end
task :all => [:generate_url, :email]
end
正在运行rake send_out:all
会触发电子邮件操作:
def email
#@signed_user = user
mail(:to => "meltzerj@wharton.upenn.edu", :subject => "DreamStill is Back")
#mail(:to => user.email, :subject => "DreamStill is Back")
end
我有一封email.html.erb
个电子邮件文件。
当我运行heroku rake send_out:all --trace
时,我会在日志中找到它:
** Invoke send_out:all (first_time)
** Invoke send_out:generate_url (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute send_out:generate_url
** Invoke send_out:email (first_time)
** Invoke environment
** Execute send_out:email
Rendered user_mailer/email.html.erb (0.5ms)
** Execute send_out:all
所以似乎所有内容都被调用了,但我没有收到电子邮件:meltzerj@wharton.upenn.edu。但是,如果我将其通过电子邮件发送到我的Gmail帐户,我会收到它。这是为什么?
答案 0 :(得分:1)
我刚刚尝试了一个telnet smtp到为wharton.upenn.edu(basalt.wharton.upenn.edu)列出的mx服务器,并且在发送一封'来自:'的邮件之后立即打了5.7.1访问被拒绝了通常会发现是垃圾邮件过滤器。
这意味着服务器正在做一些事情,比如检查连接的ip或者进行反向dns检查,spf等......
我对heroku有点模糊,但我猜这是从你的本地机器发送的。如果这样可能是问题,因为您可能正在从动态IP(如comcast)发送,并且您的IP也无法解析为helo中的域名。
我会在heroku服务器上尝试它,你可能不会遇到这个问题。
答案 1 :(得分:0)
我不确定您正在运行rake任务的环境,但是您可能需要检查config/environments/*.rb
个文件中是否存在可能导致您的电子邮件失败的设置:
config.action_mailer.raise_delivery_errors = false
答案 2 :(得分:0)
我怀疑您的学校帐户将其标记为垃圾邮件,或拒绝投放。尝试为本地MTA拖尾日志文件并查看它的内容。
如果您的服务器使用的是后缀,请尝试tail -f /var/log/maillog | grep upenn.edu