2010-07-07 40 views
13

Tôi cần gửi email có tệp đính kèm qua Ruby.Gửi email có tệp đính kèm trong Ruby

Đã tìm kiếm xung quanh nhưng không tìm thấy bất kỳ ví dụ tập lệnh đơn giản nào để thực hiện việc này.

Gần nhất tôi đã tìm thấy là ActionMailer nhưng điều đó dường như yêu cầu một loạt các tập lệnh khác để chạy. (LƯU Ý: Tôi không sử dụng Ruby on Rails)

Trả lời

17

Bạn đã xem Mail chưa? Đó là những gì API ActionMailer mới trong Rails 3 được xây dựng dựa trên đó.

"Thư là thư viện internet cho Ruby được thiết kế để xử lý email tạo, phân tích cú pháp và gửi theo cách đơn giản, rubyesque."

Ở đây có một ví dụ nhanh từ các tài liệu:

require 'mail' 

@mail = Mail.new 
file_data = File.read('path/to/myfile.pdf') 
@mail.attachments['myfile.pdf'] = { :mime_type => 'application/x-pdf', 
            :content => file_data } 

Cập nhật: Hoặc thậm chí đơn giản hơn:

@mail = Mail.new 
@mail.add_file("/path/to/file.jpg") 
+0

Mọi người nói rõ ràng là không sử dụng Rails – sergiovilar

+2

@sergiovilar: Thư là một thư viện Ruby thuần túy. Nó không phụ thuộc vào Rails. Do đó nó là một câu trả lời hợp lệ (thậm chí ngày nay, 6 năm sau khi câu trả lời đã được đăng). –

+0

Tôi nhận được lỗi này: 'phương thức undefined '[]' cho nil: NilClass' – mpora

1

Gửi Email hoặc gửi email bằng ny loại tập tin đính kèm đã trở nên đơn giản hơn với cài đặt "mail" gem.

Bước: 1 Cài đặt "mail" viên ngọc

Bước 2: Trong tập tin ruby ​​duy trì cú pháp đưa ra dưới đây:

require 'mail' 
def mailsender 
     Mail.defaults do 
     delivery_method :smtp,{ address: "<smtp_address>",openssl_verify_mode: "none" } 
     end 

     Mail.deliver do 
     from  'from_mail_id' 
     to  'to_mail_id' 
     subject 'subject_to_be_sent' 
     # body  File.read('body.txt') 
     body  'body.txt' 
     add_file '<file_location>/Word Doc.docx' 
     add_file '<file_location>/Word Doc.doc' 
     end 
end 

Bước: 3 bây giờ Chỉ cần gọi phương thức trong định nghĩa bước.

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