2014-05-05 16 views
6

Tôi hiện đang cho phép người dùng chọn một số thông số nhất định và dựa trên những thông số đó, tôi tạo tệp csv và đẩy tệp đó dưới dạng tải xuống cho người dùng. ví dụ.gửi tệp được tạo động dưới dạng email

send_data <generated csv data>, :disposition => 'attachment' :type => 'text/csv' 

Đôi khi dữ liệu trở nên quá lớn để tính toán, tôi không muốn khiến người dùng chờ tệp được tải xuống dưới dạng tải xuống. Tôi muốn gửi tệp này dưới dạng tệp đính kèm trong email.

Tôi có thể gửi email bình thường. Tôi có thể gửi tệp đã có dưới dạng tệp đính kèm. Tôi không muốn lưu tệp này. Tôi muốn gửi email trực tiếp cho người dùng.

Tôi làm như thế nào?

+0

Chào mừng bạn đến ngăn xếp tràn! – fotanus

Trả lời

6

@juanpastas - Tôi đã làm theo cách bạn đề xuất. Nhưng điều đó khiến tệp được hiển thị dưới dạng văn bản trong nội dung email.

Đây là cách nó xuất hiện trong email.

Loại nội dung: text/csv; charset = UTF-8; filename = data.csv Content-Transfer-Encoding: 7bit Nội dung-Bố trí: tệp đính kèm; filename = data.csv Content-ID: xyzxyz [nội dung của tập tin csv dưới dạng văn bản]

Sau đó, tôi bao gồm các nội dung thư và nó làm việc.

mail(to: user.email, subject: 'XYZ', body: 'XYZ') 

Điều này khiến email có thân và chủ đề mà tôi đã cung cấp và tệp này xuất hiện dưới dạng tệp đính kèm thay thế.

+0

Tôi đang cố thực hiện việc này ngay bây giờ. Bạn có thể chỉ cho tôi mã bạn sử dụng cho 'csv_data' không? Tôi đang cố gắng tìm ra cách đề cập đến nó. Hiện tại khi ứng dụng của tôi tạo tệp csv, nó sẽ được lưu vào thư mục chính nơi 'ứng dụng',' db', 'config' nằm. Bạn có sử dụng một cái gì đó khác với khối này: 'CSV.open (" my.csv "," w ") làm' –

5

tôi đã không kiểm tra này, nhưng điều này sẽ làm việc:

class YourMailer < ActionMailer::Base 
    def csv_mail(user, csv_data) 
    attachments['a.csv'] = csv_data 
    mail(to: user.email) 

    end 
end 

Và trong điều khiển của bạn:

YourMailer.csv_mail(user, csv_data).deliver 

Xem attachmentsinline attachments.

+0

Cảm ơn ... hầu như đã hoạt động. –

Các vấn đề liên quan