有没有办法测试电子邮件宝石的电子邮件连接?

时间:2014-01-22 09:10:54

标签: ruby-on-rails email gem

我的rails应用程序使用Ruby脚本从我的数据库中检索对象。 该对象由以下六个字段组成:

  • 登录
  • 密码
  • 服务器
  • 端口
  • event_type_id
  • 活跃

使用mail gem,我正在使用这些信息使用Mail.defaults创建一个新的Mail连接,就像在我的MailConnection模型中一样:

def check
    begin
        puts("Attempting to connect to the specified email server...")
        Mail.defaults do
        retriever_method :pop3, :address => :server,
                :port         => :port,
                :user_name      => :login,
                :password      => :password,
                :enable_ssl      => false

        end
    rescue Exception => msg
        puts("Unconnected : #{msg}")
        false
    else
        puts("Connected")
        true
    end
end

我在Ruby脚本中使用此方法来检查是否可以在执行任何操作之前建立连接,但如果我使用的是无效数据,即使网络无法访问,它仍然会返回“true”。 我是Ruby的新手,我想知道我的功能有什么问题;

提前致谢。

1 个答案:

答案 0 :(得分:0)

我自己是初学者,但刚刚看过这个。

使用net / pop

require 'net/pop'

pop = Net::POP3.new('your.mail.server', optional_port)
pop.start('your_username', 'your_password') #should return an error if it fails
pop.started? #if you want to double check

使用Mail gem

如果您更喜欢使用Mail gem本身,POP3检索器中的connection方法可以让您通过向块生成POP3对象来获取相同的方法:

Mail.defaults do
  retriever_method :pop3, :address => :server,
    :port         => :port,
    :user_name      => :login,
    :password      => :password,
    :enable_ssl      => false
end

Mail.connection {|pop3| pop3.active? }

您可能会注意到我可以互换使用started?active?:它们是相同的POP3实例方法。一个是别人的别名。