我想在rails app上发送来自ruby的电子邮件

时间:2012-06-25 17:32:51

标签: ruby-on-rails

我死路一条!我正在尝试制作一个应用程序来接收Hotmail上的电子邮件!我创建了一个方法,我收到一个错误,没有收到电子邮件..

在我的方法中:

class Recivemail < ActiveRecord::Base
  attr_accessible :content, :from, :subject

 def sendmail(content,from,subject)
    subject = 'subject'
    recipients = "linkinpark_8884@hotmail.com"
    from = 'from'
    sent_on = Time.now
  end 
end

在config&gt;环境&gt; development.rb

config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings ={
    :enable_starttls_auto => true,
    :address => 'smtp.hotmail.com',
    :port => 587,
    :authentication => :plain,
    :domain => 'localhost:3000',
    :user_name => 'linkinpark_8884@hotmail.com',
    :password => 'mypass'

  }

在视图&gt; recivemails&gt; show

<%=@recivemail.sendmail(@recivemail.from,@recivemail.subject,@recivemail.content)%>
一切似乎都正常工作,除了我没有收到任何想法的电子邮件? 也在cmd(我在Windows中)路径C:/ Sites / recivemail路径我运行了gem install activemailer

2 个答案:

答案 0 :(得分:1)

我的sendmail方法中没有看到任何实际发送邮件的内容。您所做的就是设置4个实例变量。我不认为你真的试图发送邮件。我也没有看到你将content参数设置为方法中的变量的位置。

我还认为您的邮件程序对象应该来自ActionMailer :: Base

class ReceiveMail < ActionMailer::Base
  default :return_path => 'system@example.com'

  def sendmail(content,from,subject)
     mail(:to => "linkinpark_8884@hotmail.com",
         :bcc => ["bcc@example.com", "Order Watcher <watcher@example.com>"],
             :subject => subject,
             :content => content) # use whatever mail headers are appropriate
  end

end

然后在您的控制器中,而不是您的模型,在您在控制器操作中创建的ActionMailer :: Base对象模型上调用.deliver,而不是在活动记录模型中。

控制器可能看起来像这样

class MailController < ApplicationController
def mails
  ReceiveMail.sendmails(params[])
   @message = ReceiveMail(params[content], params[subject], params[from]) #pass params if form POST
   @message.deliver
end

end

您可能还需要定义:

ActionMailer::Base.template_root = "mailer/templates"
  # mailer will look for rhtml templates in that path
  # example: "mailer/templates/my_mailer/signup_mail.rhtml"

在config / environments / development.rb / production.rb

答案 1 :(得分:0)