gpt4 book ai didi

ruby-on-rails - 如何使用 Ruby 将 csv 文件的内容写入电子邮件?

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:56 25 4
gpt4 key购买 nike

我有一段代码可以计算一组值并将它们写入 csv 文件。我一直在将此 csv 文件作为电子邮件附件发送。

现在,我想实际将 csv 文件的内容写入电子邮件正文本身,而不是将其作为附件发送。

CSV 文件如下所示:

Region,Count
Asia,5
America,3
Europe,4

我用来发送电子邮件的代码如下所示:

require 'mail'
def mailsender
Mail.defaults do
delivery_method :smtp,{ address: "smtp.xyz.com",openssl_verify_mode: "none" }
end

Mail.deliver do
from 'abc@xyz.com'
to 'admins@xyz.com'
subject 'Status Report'
body 'Please find attached the status report'
add_file 'C:\Users\abc\Desktop\Ruby\Summary.csv'
end
end

因此,我希望我的邮件正文看起来像这样,而不是附加包含其中信息的 csv 文件:

请在下面找到摘要:

亚洲5
美国 3
欧洲 4

最佳答案

您可以使用 stdlib 的 CSV 来读取文件:

require 'csv'

contents = CSV.read('file.csv')

这将为您提供一个数组数组,其中第一个值是标题。您还可以传递 headers: true 以将您的值作为哈希值:

> contents = CSV.read('file.csv', headers: true)
> contents.first

{
"Region" => "Asia",
"Count" => "5"
}

如果您正在处理较大的数据集并需要按名称访问值,则此选项很有用:

> contents.map{|i| "#{i["Region"]} #{i["Count"]}"}

[
[0] "Asia 5",
[1] "America 3",
[2] "Europe 4"
]

然后您可以.join("\n")这些以获得您想要的字符串格式。

小心 CSV#read,因为它会将整个文件拉入内存。如果文件很大,您可以使用 CSV#foreach 逐行遍历它。

关于ruby-on-rails - 如何使用 Ruby 将 csv 文件的内容写入电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54044218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com