在线使用红宝石



我正在创建一个Ruby文件,允许用户直接通过我的网站向我发送电子邮件。我一直在使用 gemtlsmail,当我在本地尝试我的文件时,一切正常,我收到电子邮件并且所有信息都在它们应该在的位置(如主题、消息等(。

这是我的代码:

#!/usr/bin/ruby
puts "Content-type: text/htmlnn"
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(

当我尝试将此文件在线放入我的虚拟主机时,问题就开始了。如果我将此文件加载到我网站的文件管理器中,它不会加载tlsmailgem 并且我得到的 html 表单的所有输出都消失了,没有其他任何事情发生。权限是正确的,文件在正确的文件夹中,因为如果我摆脱require "tlsmail"我可以看到我从网站的另一页获取的所有 html 输入的输出。

如果我尝试使用代替net/smtp我没有收到任何电子邮件(也是我代码的最后一行,puts "Email sent!"不会出现在页面上,所以我想当我开始使用Net::SMTP时出了点问题。我尝试遵循此答案,但我与mailfactorytlsmail有相同的问题。我还尝试了另一种完全不同的方式,用mail宝石,但没有任何反应。

我不明白的是我在要求我的文件中使用宝石时做错了什么。如何在线加载宝石并使用它?

Gem 是从主机的文件系统加载的,如果缺少 gem,则require-ing 其文件将生成日志中应该可见的LoadError

此讨论提供了一种列出服务器上可用的 gem 的方法(如果您没有 shell 访问权限(。也许您应该与您的主机管理员联系,如果他们可以为您运行gem install

最新更新