В ActionMailer я пытаюсь преобразовать массив массива в CSV и убедиться, что файл можно прочитать, как если бы он был конвертирован в UTF8 с помощью спецификации.
Раньше я копировал содержимое в новый файл в Sublime Text и нажимал File > Save With Encoding > UTF8 with BOM
, иначе символы могли бы испортиться.
Как мне добиться такой же кодировки при отправке CSV в памяти через ActionMailer (я никогда не записываю файл на мой диск)
Вот мой пример кода для отправки электронного письма
class CSVMailer < ApplicationMailer
def csv(csv_as_array_of_array,
to:,
cc: [],
from: 'messages-noreply@example.com',
reply_to: 'me@example.com',
subject: 'Here is your CSV made with love ?',
filename: 'your_csv_made_with_love.csv'
)
attach_csv(csv_as_array_of_array, filename: filename)
mail(
to: to,
cc: cc,
subject: subject
)
end
private
def attach_csv(array_of_arrays, filename:)
attachments[filename] = {
mine_type: 'text/csv',
content: CSV.generate(col_sep: ';') do |csv|
array_of_arrays.each do |row|
csv << row
end
end
}
end
end