Ruby 使用小马从simple Sinatra应用程序发送电子邮件
我正在与Sinatra建立我的第一个投资组合页面 我有一个“教科书”联系页面,带有包含“姓名”、“电子邮件”和“内容”字段的直接表单。当有人提交表单时,我希望收到电子邮件通知 Pony声称它可以通过简单的“一行”代码发送电子邮件。我已经读过了,但是关于如何设置它并不是很详细 我不知道我是否设置得不正确,代码不正确,Pony不是最好的工具,或者我的开发环境是否不允许发送邮件 下面的代码应该是从post方法发送电子邮件,然后通过Ruby 使用小马从simple Sinatra应用程序发送电子邮件,ruby,email,sinatra,pony,Ruby,Email,Sinatra,Pony,我正在与Sinatra建立我的第一个投资组合页面 我有一个“教科书”联系页面,带有包含“姓名”、“电子邮件”和“内容”字段的直接表单。当有人提交表单时,我希望收到电子邮件通知 Pony声称它可以通过简单的“一行”代码发送电子邮件。我已经读过了,但是关于如何设置它并不是很详细 我不知道我是否设置得不正确,代码不正确,Pony不是最好的工具,或者我的开发环境是否不允许发送邮件 下面的代码应该是从post方法发送电子邮件,然后通过save_message方法将数据保存到PostgreSQL数据库。数据
save_message
方法将数据保存到PostgreSQL数据库。数据正在正确持久化
#server.rb
require 'sinatra'
require 'pony'
require_relative 'model/methods'
get '/contact' do
erb :contact
end
post '/thankyou' do
unless params[:name] == '' || params[:email] == '' || params[:content] == ''
Pony.options = {
:subject => "Portfolio page: Message delivery from #{params[:name]}",
:body => "#{params[:content]}",
:via => :smtp,
:via_options => {
:address => 'smtp.1and1.com',
:port => '587',
:enable_starttls_auto => true,
:user_name => ENV["USER_EMAIL_ADDRESS"],
:password => ENV["SMTP_PASSWORD"],
:authentication => :login,
:domain => 'nterrafranca.com'
}
}
Pony.mail(:to => ENV["DESTINATION_EMAIL_ADDRESS"])
save_message(params[:name], params[:email], params[:content])
end
redirect '/'
end
小马需要知道如何发送电子邮件,而不仅仅是它的收件人、发件人、主题和身体是什么等等
从中,它将默认使用sendmail
,否则将SMTP配置为使用localhost
。根据此应用程序的运行位置,很可能是sendmail
不可用,并且localhost
上没有配置SMTP
我用小马做过几次应用。每一封邮件,我都会为小马配置一个“noreply@”电子邮件地址,用于对SMTP进行身份验证,因此使用我自己的域电子邮件(通常是谷歌应用程序,甚至Gmail)进行SMTP连接。例如:
Pony.options = {
:subject => "Some Subject",
:body => "This is the body.",
:via => :smtp,
:via_options => {
:address => 'smtp.gmail.com',
:port => '587',
:enable_starttls_auto => true,
:user_name => 'noreply@cdubs-awesome-domain.com',
:password => ENV["SMTP_PASSWORD"],
:authentication => :plain, # :plain, :login, :cram_md5, no auth by default
:domain => "localhost.localdomain"
}
}
对于Sinatra应用程序,我在调用之前执行上述代码(带有明显的替换):
Pony.mail(:to => <some_email>)
Pony.mail(:to=>)
我已多次配置小马-如果您仍有问题,请发表评论,我很乐意提供帮助。如果您使用的是带有两步验证的gmail帐户,您必须为小马邮件程序生成特定于应用程序的密码,而不是使用通常的SMTP密码 看 在常用密码的位置插入特定于应用程序的密码
这是来自。欢迎来到堆栈溢出。虽然在一个问题上非常友好和熟悉是很好的,但这并不是应该使用的写作风格。考虑堆栈溢出是一个编程食谱,类似于维基百科的社区编辑,其中问题是食谱中的问题陈述,以及它们相关的答案。绒毛不是必需的,也不是必需的;相反,写一些经过深思熟虑的问题,你会做得很好。谢谢你的帮助!无可否认,我对电子邮件的内部工作原理一无所知,因此我有几个问题:我是否需要设置一个域来替换?”noreply@cdubs-很棒的域名“?目前我正在使用我的电子邮件-address@gmail.com. 当我使用noreply@gmail.com我在浏览器中遇到“用户名和密码不被接受”错误。我正在使用OS X进行开发,并计划部署到Heroku。您可以使用您的个人电子邮件凭据作为Pony,但我强烈建议您不要这样做,因为您的个人电子邮件和密码将在以太网上显示,即使是Heroku的配置。我与我拥有域名的公司1和1建立了电子邮件。我在通往成功的道路上走得更远,但它还没有起作用。我花了一段时间与1和1的同事通电话,以确保我有所有正确的设置。我现在遇到的错误是:Net::SMTPServerBusy at/thankyou 421无效的发件人域“未知”(dns配置错误?)听起来像是
小马的:domain
部分。选项哈希配置不正确。不幸的是,如果看不到更多细节,就很难排除故障。什么是:启用\u starttls\u aut?