簡體   English   中英

在線使用紅寶石寶石

[英]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 ,我嘗試下面這個答案 ,但我有同樣的問題tlsmailmailfactory我也嘗試另一種完全不同的方式,。 mail的寶石,但沒有任何反應。

我不明白的是,我需要文件的gem來做錯了。 如何在線加載和使用寶石?

寶石是從主機的文件系統加載的,如果缺少寶石,則require -ing其文件將產生LoadError ,該錯誤應在日志中可見。

如果您沒有外殼訪問權限,則本討論提供了一種列出服務器上可用的gem的方法。 如果他們可以為您運行gem install ,也許您應該與托管管理員聯系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM