Ruby脚本将收到的电子邮件发送为短信

我有一个简单的ruby脚本,用于将所有收到的消息作为sms消息发送。 但是,出于某种原因它不会执行。

这是示例代码;

/ etc / aliases motor:“| /home/motorcare/sms_script.rb”

sms_script.rb

#!/usr/bin/env ruby require "json" require "httparty" require 'net/http' require 'uri' require "cgi" require "mail" # Reading files mail = Mail.read(ARGV[0]) destination = mail.subject message = mail.body.decoded #first_line = lines[0].strip if destination =~ /^(256)/ send(destination, message) else destination = "256#{destination.gsub(/^0+/,"")}" send(destination, message) end # Sending message def send(destination, message) url = "http://xxxxxxxxxx.com/messages?token=c19ae2574be1875f0fa09df13b0dde0b&to=#{phone_number}&from=xxxxxx&message=#{CGI.escape(message)}" 5.times do |i| response = HTTParty.get(url) body = JSON.parse(response.body) if body["status"] == "Success" break end end end 

任何有类似脚本的人都可以帮助这个吗?

你有2个错误。

第一个错误是send已经在Ruby中定义。 看到这个SOpostsend()在Ruby中做了什么?

看到这段代码

 $ cat send.rb #!/usr/bin/env ruby puts defined? send puts send :class $ ./send.rb method Object 

第二个错误是您在方法定义之前调用该方法。 请参阅此示例代码(在def welcome之前调用def welcome

 $ cat welcome.rb #!/usr/bin/env ruby welcome('hello from welcome') def welcome(msg) puts msg end $ ./welcome.rb ./welcome.rb:3:in `
': undefined method `welcome' for main:Object (NoMethodError)

将方法名称从send更改为其他名称,例如send_sms,并在调用方法之前输入定义

所以这应该是这样的:

 #!/usr/bin/env ruby require "json" require "httparty" require 'net/http' require 'uri' require "cgi" require "mail" # Sending message def send_sms(destination, message) url = "http://xxxxxxxxxx.com/messages?token=c19ae2574be1875f0fa09df13b0dde0b&to=#{phone_number}&from=xxxxxx&message=#{CGI.escape(message)}" 5.times do |i| response = HTTParty.get(url) body = JSON.parse(response.body) if body["status"] == "Success" break end end end # Reading files mail = Mail.read(ARGV[0]) destination = mail.subject message = mail.body.decoded #first_line = lines[0].strip if destination =~ /^(256)/ send_sms(destination, message) else destination = "256#{destination.gsub(/^0+/,"")}" send_sms(destination, message) end 

并且还向脚本添加日志记录将为您提供有关运行和打包时内部情况的信息。 所以你可以轻松调试beaviour。 记录是DEBUG的简易方法。