如何使用 Ruby 的邮件 gem 通过 smtp 发送电子邮件?

Posted

技术标签:

【中文标题】如何使用 Ruby 的邮件 gem 通过 smtp 发送电子邮件?【英文标题】:How to send email via smtp with Ruby's mail gem? 【发布时间】:2012-10-04 18:47:14 【问题描述】:

我正在为 Ruby 使用 mail gem https://github.com/mikel/mail

如何通过 smtp 服务器发送电子邮件?如何指定地址和端口?我应该为 Gmail 使用哪些设置?

github上的README只给出了本地服务器发送的例子。

【问题讨论】:

【参考方案1】:

来自http://lindsaar.net/2010/3/15/how_to_use_mail_and_actionmailer_3_with_gmail_smtp

要通过 GMail 发送,您需要将 Mail::SMTP 类配置为具有正确的值,因此要尝试此操作,请打开 IRB 并输入以下内容:

require 'mail'

options =  :address              => "smtp.gmail.com",
            :port                 => 587,
            :domain               => 'your.host.name',
            :user_name            => '<username>',
            :password             => '<password>',
            :authentication       => 'plain',
            :enable_starttls_auto => true  



Mail.defaults do
  delivery_method :smtp, options
end

最后一个块调用Mail.defaults,它允许我们为从现在开始创建的所有邮件对象设置全局传递方法。高级用户提示,您不必使用全局方法,您可以直接在任何单独的 Mail::Message 对象上定义 delivery_method 并且每封电子邮件有不同的交付代理,如果您正在构建具有多个用户的应用程序,这很有用不同的服务器处理他们的电子邮件。

Mail.deliver do
       to 'mikel@test.lindsaar.net'
     from 'ada@test.lindsaar.net'
  subject 'testing sendmail'
     body 'testing sendmail'
end

【讨论】:

我收到以下错误:/usr/local/rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/net/smtp.rb:960:in 'check_auth_response': 534-5.7.14 &lt;https://accounts.google.com/ContinueSignIn?sarp=1&amp;scc=1&amp;plt=AKgnsbvUX (Net::SMTPAuthenticationError) - 我三次检查了我的连接数据,一切正常。 @kitsched 检查您的 gmail 帐户中的安全设置。 Gmail 正在阻止可疑活动。您需要转到设置并确认您知道该活动 @w_g 谢谢,在此期间我想通了。下次登录时,它提示我确认“可疑”活动。 这在开发中对我不起作用,必须启用此设置google.com/settings/security/lesssecureapps

以上是关于如何使用 Ruby 的邮件 gem 通过 smtp 发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Actionmailer/Ruby on Rails 发送具有多个动态 smtp 的电子邮件

使用 ruby​​ 邮件 gem 获取电子邮件正文而不获取附件

Ruby Net::SMTP - 使用密件抄送发送电子邮件:收件人

在 Rails 开发环境 smtp cpanel 上发送电子邮件 ruby

如何在 ruby​​ 中从 net//smtp 发送电子邮件中的 HTML 内容?

分析一个达到 100% CPU 且永不结束的 ruby​​ 应用程序