Я сделал простую форму для отправки писем с вложениями. Проблема в том, что я не знаю, как заставить его работать в почтовике. Все руководства, которые я нашел до сих пор, охватывают сценарий, когда файл для вложения уже находится где-то на сервере, и я не смог найти ничего о проверке содержимого электронной почты.
Итак, у меня к вам 2 вопроса:
- Как я могу позволить пользователям отправлять электронные письма с загруженными ими вложениями?
- Как я могу проверить вводимые пользователем данные и расширения вложений?
Моя электронная форма ...
<div id="form_wrapper">
<%= form_for(:kontakt, :url => {:action => 'kontakt'}, :html => { :multipart => true }, :remote=>true) do |f| %>
<ul>
<li>
<%= f.label(:email) %>
<%= f.text_field(:email) %>
</li>
<li>
<%= f.label(:content) %>
<%= f.text_area(:content, :size => "42x7") %>
</li>
<li>
<%= f.label(:preview, :class=>:preview )%>
<%= f.file_field :preview %>
</li>
</ul>
<%= image_submit_tag("blank.gif",:id=>"send_email", :class=>"action submit") %>
<%= link_to("Reset", {:controller=>'frontend',:action => 'index'},:remote => true, :class => 'action reset') %>
<% end %>
</div>
<%= javascript_include_tag 'jquery.form.js','jquery.rails','jquery.remotipart' %>
и мой почтовик ...
class Contact < ActionMailer::Base
default :from => "[email protected]"
def wiadomosc(email)
@content=email[:content]
file=email[:preview]
attachments[file.original_filename] =File.read(file.path)
mail(
:subject=>"www.XXXXXX.pl - you've got a new message",
:reply_to =>"[email protected]",
:to => email[:email]
)
end
end
Я придумал attachments[file.original_filename] =File.read(file.path)
, и он добавляет вложения, но файлы повреждены и не могут быть открыты ...
Приветствуются любые мысли или ссылки.