6

我无法ar_sendmail从终端运行命令。我不认为我错过了它的配置。以下是我的代码;

发展.rb
++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++
ActionMailer::Base.delivery_method = :activerecord
ActionMailer::Base.smtp_settings = {
  :address => "smtp.gmail.com",
  :端口=> 25,
  :domain => "www.google.com",
  :authentication => :plain,
  :user_name => "ashis.lun@gmail.com",
  :password => "加德满都",
  :enable_starttls_auto => 真
}
需要“action_mailer/ar_mailer”
宝石文件
+++++++++++++++++++++++++++++++
宝石“ar_mailer”,“1.5.1”
我的邮件
++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++
类邮局 < ActionMailer::ARMailer
  def recover_password_email(帐户,姓名,地址)
    @recipients = 地址
    @from = "ashis.lun@gmail.com"
    @subject = "您在 #{account.org_name} 的帐户已准备就绪"
    @body["subdomain"] = account.subdomain
    @body["name"] = 名称
    @body["org_name"] = account.org_name
    @body["密码"] = 密码
    @body["email"] = 地址
  结尾
结尾
我的控制器
++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++
def 重置密码
    @user = User.find_by_email(params[:email])

    开始
      如果@用户
        密码 = get_new_password
        @user.update_attributes!(:password => 密码)
        Postoffice.deliver_recover_password_email(@account,@user.individual.firstname,@user.email,密码)
        " flash[:notice] = "您的密码已通过电子邮件发送给您。它应该会在一分钟内显示出来!"
        重定向到'/会话/新'      
      结尾
    救援
      flash[:notice] = "抱歉,重置密码时出现问题。"
      重定向到'/会话/新'
    结尾
  结尾
结尾

每当我运行 ar_sendmail 命令时,我都会收到以下消息。如果我RAILS_ROOT在控制台中点击,那么我会显示/Users/me/Dev/a5his

用法:ar_sendmail [选项]

ar_sendmail 扫描电子邮件表中的新消息并将它们发送到
网站配置的 SMTP 主机。

ar_sendmail 必须从 Rails 应用程序的根目录运行或指定它
与--chdir。

如果 ar_sendmail 以 --pid-file 启动,如果 PID
文件已存在或内容与其 PID 不匹配。

发送邮件选项:
    -b, --batch-size BATCH_SIZE 每次延迟发送的最大电子邮件数量
                                     默认:发送所有可用的电子邮件
        --delay DELAY 检查新邮件之间的延迟
                                     在数据库中
                                     默认值:60
        --max-age MAX_AGE 电子邮件的最大年龄。在这之后
                                     它将从队列中删除。
                                     设置为 0 以禁用队列清理。
                                     默认值:604800 秒
    -o, --once 只检查新邮件并投递一次
                                     默认值:假
    -p, --pid-file [PATH] 用于存储 pid 的文件。
                                     默认为 /var/run/ar_sendmail.pid
                                     当没有给出路径时
    -d, --daemonize 作为守护进程运行
                                     默认值:假
        --mailq 显示等待发送的邮件列表

设置选项:
        --create-migration 打印迁移以添加电子邮件表
                                     到标准输出
        --create-model 打印电子邮件 ActiveRecord 的模型
                                     反对标准输出

通用选项:
    -c, --chdir PATH 使用 PATH 作为应用程序路径
                                     默认: 。
    -e, --environment RAILS_ENV 设置 RAILS_ENV 常量
                                     默认:
    -t, --table-name TABLE_NAME 保存电子邮件的表的名称
                                     用于 sendmail 和
                                     迁移创建
                                     默认值:电子邮件
    -v, --[no-]verbose 详细
                                     默认:
    -h, --help 你在看


ar_sendmail 必须从 Rails 应用程序的根目录运行才能发送电子邮件。

/Users/me/Dev/a5his 似乎不是 Rails 应用程序根目录。

提前感谢<><

4

6 回答 6

2

使用延迟作业怎么样?我过去使用过 ar mailer,发现延迟工作是一个更好的解决方案。

https://github.com/collectiveidea/delayed_job

于 2011-06-25T07:04:38.923 回答
1

不确定它是否会有所作为,但它说在这里

require "action_mailer/ar_mailer"

environment.rb, 不是development.rbproduction.rb. 除此之外,我看不到你错过的任何东西。

于 2011-06-23T22:05:12.633 回答
0

在运行命令之前尝试ar_sendmail --chdir /Users/me/Dev/a5his或更改到 Rails 应用程序的根目录

于 2011-06-10T12:22:51.880 回答
0

ar_sendmail 必须从 Rails 应用程序的根目录运行才能发送电子邮件。/Users/me/Dev/a5his 似乎不是 Rails 应用程序根目录。

您是否在应用程序的根目录中运行该命令?

于 2011-06-27T23:45:14.020 回答
0

尝试

cd #{Rails.root.to_s} && bundle exec ar_sendmail_rails3 -e production
于 2012-04-26T09:22:06.300 回答
0

如果您查看源代码(如下所示),如果加载配置/环境失败,则会显示此消息。我遇到的一个实例是未满足依赖项,这导致在加载配置/环境时触发异常。为了解决这个问题,您可以使用 irb 会话并尝试 require config/environment 以查看可能导致 require 失败的错误。

Dir.chdir options[:Chdir] do
  begin
    require 'config/environment'
  rescue LoadError
    usage opts, <<-EOF
  #{name} must be run from a Rails application's root to deliver email.
  #{Dir.pwd} does not appear to be a Rails application root.
      EOF
  end
end
于 2014-05-08T14:29:59.737 回答