我有一个用于发送电子邮件的ruby文件。我正在使用教程中的代码如下:
require 'net/smtp'
test_arr = ["test", "test1"]
message = <<MESSAGE_END
From: Private Person <me@fromdomain.com>
To: A Test User <test@todomain.com>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
//Here I want to iterate through the Array test_arr and create a h1 element for each element in array
<h1> test </h1>
<h1> test1 </h1>
MESSAGE_END
Net::SMTP.start('localhost') do |smtp|
smtp.send_message message, 'me@fromdomain.com',
'test@todomain.com'
end
我已经尝试&lt;%注入ruby代码来迭代数组但似乎不起作用。我怎么能遍历那条HTML消息中的test_arr数组?
答案 0 :(得分:0)
将文件另存为.html.erb
,以便在html消息中使用带<%= ruby_code %>
的嵌入式ruby代码。
答案 1 :(得分:0)
您需要使用erb
之类的内容将其创建为模板。
这样的事情应该有效。
require 'net/smtp'
require 'erb'
test_arr = ["test", "test1"]
message = <<MESSAGE_END
From: Private Person <me@fromdomain.com>
To: A Test User <test@todomain.com>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
<% test_arr.each() do |ta| %>
<h1><%=ta%></h1>
<% end %>
MESSAGE_END
# create a renderer to parse our template
renderer = ERB.new(message)
Net::SMTP.start('localhost') do |smtp|
smtp.send_message renderer.result(), 'me@fromdomain.com',
'test@todomain.com'
end
注意你需要在脚本中require 'erb'
创建模板,在这种情况下是一个简单的块来迭代数组。然后,您需要使用Erb.new(template_name)
从模板创建渲染器。获得渲染器后,需要在其上调用#result
以获取渲染输出。您可以查看erb文档以获取更多信息(http://ruby-doc.org/stdlib-2.3.1/libdoc/erb/rdoc/ERB.html)
答案 2 :(得分:0)
排成一行:
C:\nginx-1.8.1>ls -1
conf
contrib
docs
html
logs
nginx.exe
temp
在相关位置。
或者,您可以使用我的dom
gem:
test_arr.map{|e| "<h1>#{e}</h1>"}.join($/)