Отправка электронной почты с вложениями в Ruby с помощью Pony Gem

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

Я постоянно сталкиваюсь с этой проблемой:
/usr/local/lib/ruby/1.9.1/net/smtp.rb:942:in 'check_response': 552 sorry, that message size exceeds my databytes limit (#5.3.4) (Net::SMTPFatalError)

Прикрепленный файл весит всего 110кб

Код:

    Pony.mail(
        :to => to,
        :from => 'Me <[email protected]>',
        :subject => html_entity_decoder.decode(options[:subject]),
        :html_body => "#{options[:body]}".html_safe,
        :attachments => {File.basename("#{attachment}") => File.read("#{attachment}")},
        :headers => { "Content-Type" => "multipart/mixed", "Content-Transfer-Encoding" => "base64", "Content-Disposition" => "attachment" },
        :via => :smtp, 
        :via_options => {
          :address        => ADDRESS,
          :port           => '25',
          :enable_starttls_auto => true,
          :user_name      => USERNAME,
          :password       => PWD,
          :authentication => :plain,
          :domain         => DOMAIN
          }
      )

Любая идея о том, что может быть не так?


person dennismonsewicz    schedule 01.03.2011    source источник


Ответы (2)


Это говорит вам о том, что в почтовом ящике, на который вы его отправляете, закончилось место.

Ошибка является ошибкой SMTP: 552 Запрошенное почтовое действие прервано: превышено выделение памяти

изложено в документе RFC http://www.ietf.org/rfc/rfc2821.txt. .

Так что либо почтовый ящик переполнен, либо вы отправляете что-то, что в него не влезет

person macarthy    schedule 01.03.2011
comment
Хм, странно... Я отправляю тестовое письмо самому себе в свою учетную запись Gmail... и знаю, что у меня там ТОННА места. Я изменил порт SMTP на 25 вместо 587 (по умолчанию), и теперь я получаю сообщение об ошибке с истекшим сроком выполнения... - person dennismonsewicz; 02.03.2011
comment
Это на сервере, тестовая машина, какова установка? - person macarthy; 02.03.2011
comment
Я тестирую локально... Я собираюсь поставить это на сервер и посмотреть, что произойдет... - person dennismonsewicz; 02.03.2011
comment
Да, я только что закинул свой скрипт на сервер и получил ту же исходную ошибку, и я попробовал его на обоих портах (587 и 25). Я точно знаю, что мои почтовые ящики ни за что не переполнятся... Я попытался отправить вложение на свой личный gmail и рабочий адрес электронной почты. - person dennismonsewicz; 02.03.2011
comment
Спасибо за помощь человеку! Выяснилось, что у SMTP-хоста, который мы использовали, было очень маленькое ограничение на размер файла для вложений... они увеличили его, и теперь все работает! - person dennismonsewicz; 02.03.2011
comment
Что ж, проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда я отправляю электронное письмо с вложением, в теле письма ничего не появляется, и хотя мой почтовый клиент видит, что есть вложение, я не могу щелкнуть на загрузку. Пересмотренный код выше - person dennismonsewicz; 03.03.2011

Пожалуйста, используйте это

:attachments => {File.basename("#{attachment}") => File.read("#{attachment}")},
  :headers => { "Content-Type" => "multipart/mixed", "Content-Transfer-Encoding" => "base64", "Content-Disposition" => "attachment" }

Вероятно, это решит вашу проблему.

person Neeraj Kumar    schedule 02.01.2014