Ruby:我试图在电子邮件{body}中发送一个数组,但它不发送数组,而只发送文本'body'发送

时间:2016-12-07 10:44:13

标签: ruby email smtp

这是我试过的代码

a = [1,2,3,4,5]

require 'net/smtp'

message = <<MESSAGE_END
From: Private Person <me@fromdomain.com>
To: A Test User <test@todomain.com>
Subject: Something

"#{a}" This is a test e-mail message.
MESSAGE_END

Net::SMTP.start('localhost') do |smtp|
  smtp.send_message message, 'me@fromdomain.com', 
                             'test@todomain.com'
end

我已经找到了解决这个问题的方法

message =%Q(
Subject: Test suite result
#{a}
)
smtp = Net::SMTP.new 'smtp.gmail.com', 587
 smtp.enable_starttls
  smtp.start('smtp.gmail.com', 'from@mail.com', 'password', :plain) do |smtp|
    smtp.send_message message, 'from@mail.com',
                                   'to@mail.com'
  end

但如果我使用上述方法,我只能发送正文,不能发送主题和地址。

1 个答案:

答案 0 :(得分:1)

Heredocs可以使用#{var}语法接受像普通字符串这样的变量:

message = <<MESSAGE_END
From: Private Person <me@fromdomain.com>
To: A Test User <test@todomain.com>
Subject: #{a}

This is a test e-mail message.
MESSAGE_END

来源:https://stackoverflow.com/a/3332901