【问题标题】:Using ruby gems online在线使用红宝石
【发布时间】: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 并使用它?

【问题讨论】:

    标签: ruby email rubygems smtp


    【解决方案1】:

    gem 从主机的文件系统加载,如果 gem 丢失,则 require-ing 它的文件将生成应该在日志中可见的 LoadError

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多