Cloud9 和 ActionMailer / Mailgun?
Cloud9 and ActionMailer / Mailgun?
希望你能帮帮我!
我以前在本地开发,但我在国外,我正在使用 Cloud9 处理一些项目。目前,我很难使用 Action Mailer。
我的 ActionMailer 初始化程序:
ActionMailer::Base.smtp_settings = {
port: '2525',
address: 'smtp.mailgun.org',
user_name: ENV['MAILGUN_SMTP_LOGIN'],
password: ENV['MAILGUN_SMTP_PASSWORD'],
domain: 'app07ad98bdda3b4c469a24228512cffe5c.mailgun.org',
authentication: :plain,
content_type: 'text/html'
}
ActionMailer::Base.delivery_method = :smtp
mailers/gun_mailer.rb
class GunMailer < ActionMailer::Base
default from: "from@example.com"
def welcome_email(user)
@user = user
@url = 'http://example.com/login'
mail(to: @user.email, subject: 'Welcome to My Awesome Site')
end
end
views/gun_mailer/welcome_email.erb
<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
<h1>Welcome to example.com, <%= @user.email %></h1>
<p>
You have successfully signed up to example.com,
your username is: <%= @user.email %>.<br>
</p>
<p>
To login to the site, just follow this link: <%= @url %>.
</p>
<p>Thanks for joining and have a great day!</p>
</body>
</html>
控制台
u = User.first
GunMailer.welcome_email(u).deliver
我已经用figaro设置了环境变量,一切似乎都是正确的...但是邮件从来没有发送过!我听说 C9 有一些端口被阻止(587 是其中之一),我试过 2587、2525(正如其他海报推荐的那样),但它不起作用!
首先,我会确保使用 Rails 控制台在您的 mail.rb 中实际设置了以下变量:
ENV['MAILGUN_SMTP_LOGIN']
ENV['MAILGUN_SMTP_PASSWORD']
其次,您应该通过执行以下操作来验证端口是否未被阻止:
$ telnet smtp.mailgun.org 2525
$ telnet smtp.mailgun.org 587
注意:如果您看到类似以下内容,则表示端口未被阻止:
Trying 104.130.177.23...
Connected to smtp.mailgun.org.
Escape character is '^]'.
220 ak47 ESMTP ready
如果上述端口之一未被阻止,那么我会停在这里,更新邮件初始值设定项以使用未被阻止的端口,并重新检查您的代码。否则,我会继续阅读。
第三,如果您确定两个端口都被阻止,那么您将需要使用 HTTP API,我会在这里阅读文档:
https://documentation.mailgun.com/api-sending.html#sending
或
使用不同的托管公司,例如 Heroku.com 或 DigitalOcean.com。
好吧,我希望以上信息能帮助您解决问题。
希望你能帮帮我!
我以前在本地开发,但我在国外,我正在使用 Cloud9 处理一些项目。目前,我很难使用 Action Mailer。
我的 ActionMailer 初始化程序:
ActionMailer::Base.smtp_settings = {
port: '2525',
address: 'smtp.mailgun.org',
user_name: ENV['MAILGUN_SMTP_LOGIN'],
password: ENV['MAILGUN_SMTP_PASSWORD'],
domain: 'app07ad98bdda3b4c469a24228512cffe5c.mailgun.org',
authentication: :plain,
content_type: 'text/html'
}
ActionMailer::Base.delivery_method = :smtp
mailers/gun_mailer.rb
class GunMailer < ActionMailer::Base
default from: "from@example.com"
def welcome_email(user)
@user = user
@url = 'http://example.com/login'
mail(to: @user.email, subject: 'Welcome to My Awesome Site')
end
end
views/gun_mailer/welcome_email.erb
<!DOCTYPE html>
<html>
<head>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
</head>
<body>
<h1>Welcome to example.com, <%= @user.email %></h1>
<p>
You have successfully signed up to example.com,
your username is: <%= @user.email %>.<br>
</p>
<p>
To login to the site, just follow this link: <%= @url %>.
</p>
<p>Thanks for joining and have a great day!</p>
</body>
</html>
控制台
u = User.first
GunMailer.welcome_email(u).deliver
我已经用figaro设置了环境变量,一切似乎都是正确的...但是邮件从来没有发送过!我听说 C9 有一些端口被阻止(587 是其中之一),我试过 2587、2525(正如其他海报推荐的那样),但它不起作用!
首先,我会确保使用 Rails 控制台在您的 mail.rb 中实际设置了以下变量:
ENV['MAILGUN_SMTP_LOGIN']
ENV['MAILGUN_SMTP_PASSWORD']
其次,您应该通过执行以下操作来验证端口是否未被阻止:
$ telnet smtp.mailgun.org 2525
$ telnet smtp.mailgun.org 587
注意:如果您看到类似以下内容,则表示端口未被阻止:
Trying 104.130.177.23...
Connected to smtp.mailgun.org.
Escape character is '^]'.
220 ak47 ESMTP ready
如果上述端口之一未被阻止,那么我会停在这里,更新邮件初始值设定项以使用未被阻止的端口,并重新检查您的代码。否则,我会继续阅读。
第三,如果您确定两个端口都被阻止,那么您将需要使用 HTTP API,我会在这里阅读文档:
https://documentation.mailgun.com/api-sending.html#sending
或
使用不同的托管公司,例如 Heroku.com 或 DigitalOcean.com。
好吧,我希望以上信息能帮助您解决问题。