Почтовое вложение Rails находится в теле письма - PullRequest
0 голосов
/ 30 мая 2018

Мне нужно отправить простую почту с вложением.Прямо сейчас он отправляет электронное письмо, но вложение находится в теле письма, как это.enter image description here

--
Content-Type: text/csv;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename=errors_in_address_table.csv
Content-ID: <5b0e7d6b4abff_10c12ac224c8b0d4994d@development.mail>

Текущий код для отправки электронной почты

saved_file = Rails.root.join('db', 'fix_db', 'errors_in_address_table.csv')
mailer = ActionMailer::Base.mail(from: 'no-replay@test.com', to: 'test@test.com', subject: 'Errors in database', body: '', content_type: 'multipart/mixed')
mailer.attachments['errors_in_address_table.csv'] = { mime_type: 'text/csv', content: File.read(saved_file) }
mailer.deliver

Я пытался заставить это работать правильно в течение нескольких часов.Может быть, мне поможет более опытный кодер.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

У меня есть несколько разных кусочков кода для прикрепления в моем приложении, я не уверен, что это может сработать для вас, но вы можете попробовать.

Попробуйте заменить свой блок

saved_file = Rails.root.join('db', 'fix_db', 'errors_in_address_table.csv')
mailer = ActionMailer::Base.mail(from: 'no-replay@test.com', to: 'test@test.com', subject: 'Errors in database', body: '', content_type: 'multipart/mixed')
mailer.attachments['errors_in_address_table.csv'] = { mime_type: 'text/csv', content: File.read(saved_file) }
mailer.deliver

следующим, что немного проще:

attachments['errors_in_address_table.csv'] = open(Rails.root.join('db', 'fix_db', 'errors_in_address_table.csv')).read
mail(from: 'no-replay@test.com', to: 'test@test.com', subject: 'Errors in database', body: '')

Это действительно метод проб и ошибок.Я удалю, если это не сработает.

Также у вас есть представление для вашего почтовика?

0 голосов
/ 30 мая 2018

В соответствии с общим описанием, похоже, вам нужно изменить код вложения

saved_file = Rails.root.join('db', 'fix_db', 'errors_in_address_table.csv')
mailer = ActionMailer::Base.mail(from: 'no-replay@test.com', to:    'test@test.com', subject: 'Errors in database', body: '', content_type: 'multipart/mixed')
mailer.attachments['errors_in_address_table.csv'] = saved_file
mailer.deliver
...