Я не понимаю, почему ты не мог.В почтовой документации вы можете увидеть этот пример кода:
mail = Mail.new do
from 'me@test.lindsaar.net'
to 'you@test.lindsaar.net'
subject 'Here is the image you wanted'
body File.read('body.txt')
add_file :filename => 'somefile.png', :content => File.read('/somefile.png')
end
mail.deliver!
Вам просто нужно заменить цель :content => ...
содержимым файла в памяти.И этого должно быть достаточно.Нет никакой необходимости сохранять вложения, даже временно, на диск, поскольку они перекодируются в base64 и добавляются в конце вашего письма.
Во второй части вашего вопроса есть много сюжета / графика.там вокругСм. этот вопрос или эту библиотеку , например.
На самом деле не существует ни одной библиотеки над другими для такого рода вопросов.Существует множество библиотек для разных целей, и вам нужно выбрать то, что больше соответствует вашим потребностям и ограничениям.