[英]Using ruby gems online
我正在創建一個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
)
當我嘗試將此文件在線放入Web托管時,問題就開始了。 如果我將此文件加載到我網站的文件管理器中,則它不會加載tlsmail
gem和我正在獲取的html表單中的所有輸出都消失了,並且沒有任何其他反應。 權限是正確的,該文件在正確的文件夾中,因為如果擺脫了require "tlsmail"
我可以看到我從網站另一頁上獲取的所有html輸入的輸出。
如果我嘗試使用net/smtp
代替,則我不會收到任何電子郵件(也是我代碼的最后一行, puts "Email sent!"
未顯示在頁面上,所以我猜想當我開始使用Net::SMTP
時出了點問題Net::SMTP
,我嘗試下面這個答案 ,但我有同樣的問題tlsmail
與mailfactory
我也嘗試另一種完全不同的方式,。 mail
的寶石,但沒有任何反應。
我不明白的是,我需要文件的gem來做錯了。 如何在線加載和使用寶石?
寶石是從主機的文件系統加載的,如果缺少寶石,則require
-ing其文件將產生LoadError
,該錯誤應在日志中可見。
如果您沒有外殼訪問權限,則本討論提供了一種列出服務器上可用的gem的方法。 如果他們可以為您運行gem install
,也許您應該與托管管理員聯系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.