【发布时间】:2018-10-30 13:22:41
【问题描述】:
我正在创建一个 Ruby 文件,它允许用户直接通过我的网站向我发送电子邮件。我一直在使用 gem tlsmail,当我在本地尝试我的文件时一切正常,我收到了电子邮件,所有信息都在它们应该在的位置(如主题、消息等)。
这是我的代码:
#!/usr/bin/ruby
puts "Content-type: text/html\n\n"
require "cgi"
require "tlsmail"
cgi_request = CGI::new("html5")
contact_name = cgi_request["contact_name"]
contact_email = cgi_request["contact_email"]
contact_subject = cgi_request["subject"]
contact_message = cgi_request["contact_message"]
puts contact_name
puts contact_email
puts contact_subject
puts contact_message
msgstr = <<END_OF_MESSAGE
From: Mattia Bombelli <mattiabombelli.noreply@gmail.com>
To: A Private User <another-email@gmail.com>
Subject: Testing email
Just testing the file
END_OF_MESSAGE
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
Net::SMTP.start("smtp.gmail.com", 587, "gmail.com", "mattiabombelli.noreply@gmail.com", "password", :plain) do |smtp|
smtp.send_message msgstr, "mattiabombelli.noreply@gmail.com", "another-email@gmail.com"
end
puts "Email sent!"
(我所做的唯一更改是在shebang中,在本地我使用#!/usr/local/bin/ruby)
当我尝试将此文件在线放入我的虚拟主机时,问题就开始了。如果我将此文件加载到我网站的文件管理器中,它不会加载tlsmail gem,并且我得到的 html 表单的所有输出都会消失,并且不会发生其他任何事情。权限是正确的,文件位于正确的文件夹中,因为如果我摆脱了require "tlsmail",我可以看到我从网站的另一个页面获取的所有 html 输入的输出。
如果我尝试改用 net/smtp,我没有收到任何电子邮件(也是我代码的最后一行,puts "Email sent!" 不会出现在页面上,所以我猜当我开始使用 @987654329 时会出现问题@. 我尝试关注this answer,但我遇到了与mailfactory 相同的tlsmail 问题。我还尝试了另一种完全不同的方式,使用mail gem,但没有任何反应。
我不明白我在为我的文件需要 gem 时做错了什么。如何在线加载 gem 并使用它?
【问题讨论】: