This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
Sending Mail | ||
---|---|---|
Code | Expected | Actual |
require 'rubygems' require 'action_mailer' class SimpleMailer < ActionMailer::Base def simple_message(recipient) from 'leonardr@example.org' recipients recipient subject 'A single-part message for you' body 'This message has a plain text body.' end end puts SimpleMailer.create_simple_message('lucas@example.com') |
From: leonardr@example.org To: lucas@example.com Subject: A single-part message for you Content-Type: text/plain; charset=utf-8 This message has a plain text body. |
From: leonardr@example.org To: lucas@example.com Subject: A single-part message for you Content-Type: text/plain; charset=utf-8 This message has a plain text body. |
ActionMailer::Base.server_settings = { :address => 'localhost', :port => 25, # 25 is the default :domain => 'example.org' } SimpleMailer.deliver_simple_message('lucas@example.com') ActionMailer::Base.server_settings = { :address => 'smtp.example.org', :port => 25, :domain => 'example.org', :user_name => 'leonardr@example.org', :password => 'my_password', :authentication => :login } SimpleMailer.deliver_simple_message('lucas@example.com') class SimpleMailer def headerful_message @headers['A custom header'] = 'Its value' body 'Body' end end puts SimpleMailer.create_headerful_message |
Content-Type: text/plain; charset=utf-8 A custom header: Its value Body |
Errno::ECONNREFUSED: Connection refused - connect(2) from /usr/lib/ruby/1.8/net/protocol.rb:206:in `initialize' from /usr/lib/ruby/1.8/net/protocol.rb:206:in `old_open' from /usr/lib/ruby/1.8/timeout.rb:56:in `timeout' from /usr/lib/ruby/1.8/timeout.rb:76:in `timeout' from /usr/lib/ruby/1.8/net/protocol.rb:206:in `old_open' from /usr/lib/ruby/1.8/net/smtp.rb:393:in `do_start' from /usr/lib/ruby/1.8/net/smtp.rb:378:in `start' from /usr/lib/ruby/1.8/net/smtp.rb:316:in `start' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:447:in `perform_delivery_smtp' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:333:in `deliver!' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:227:in `method_missing' from (irb):15 SocketError: getaddrinfo: Name or service not known from /usr/lib/ruby/1.8/net/protocol.rb:206:in `initialize' from /usr/lib/ruby/1.8/net/protocol.rb:206:in `old_open' from /usr/lib/ruby/1.8/timeout.rb:56:in `timeout' from /usr/lib/ruby/1.8/timeout.rb:76:in `timeout' from /usr/lib/ruby/1.8/net/protocol.rb:206:in `old_open' from /usr/lib/ruby/1.8/net/smtp.rb:393:in `do_start' from /usr/lib/ruby/1.8/net/smtp.rb:378:in `start' from /usr/lib/ruby/1.8/net/smtp.rb:316:in `start' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:447:in `perform_delivery_smtp' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:333:in `deliver!' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:227:in `method_missing' from (irb):22 Content-Type: text/plain; charset=utf-8 A custom header: Its value Body |
require 'mime/types' class SimpleMailer def directory_dump_message(recipient, directory) from 'directory-dump@example.org' recipients recipient subject "Dump of #{directory}" body %{Here are the files currently in "#{directory}":} Dir.new(directory).each do |f| path = File.join(directory, f) if File.file? path mime_type = MIME::Types.of(f).first content_type = (mime_type ? mime_type.content_type : 'application/binary') attachment(content_type) do |a| a.body = File.read(path) a.filename = f a.transfer_encoding = 'quoted-printable' if content_type =~ /^text\// end end end end end SimpleMailer.create_directory_dump_message('lucas@example.com', 'email_test') Dir.mkdir('email_test') open('email_test/image.jpg', 'wb') { |f| f << "\377\330\377\340\000\020JFIF" } open('email_test/text.txt', 'w') { |f| f << "Here's some text." } puts SimpleMailer.create_directory_dump_message('lucas@example.com', 'email_test') |
From: directory-dump@example.org To: lucas@example.com Subject: Dump of email_test Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=mimepart_443d73ecc651_3ae1..fdbeb1ba4328 --mimepart_443d73ecc651_3ae1..fdbeb1ba4328 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Here are the files currently in "email_test": --mimepart_443d73ecc651_3ae1..fdbeb1ba4328 Content-Type: image/jpeg; name=image.jpg Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=image.jpg /9j/4AAQSkZJRg== --mimepart_443d73ecc651_3ae1..fdbeb1ba4328 Content-Type: text/plain; name=text.txt Content-Transfer-Encoding: Quoted-printable Content-Disposition: attachment; filename=text.txt Here's some text.= --mimepart_443d73ecc651_3ae1..fdbeb1ba4328-- |
Errno::ENOENT: No such file or directory - email_test from (irb):37:in `initialize' from (irb):37:in `directory_dump_message' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:274:in `create!' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:267:in `initialize' from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:21:in `new' from /usr/lib/ruby/gems/1.8/gems/actionmailer-1.2.1/lib/action_mailer/base.rb:226:in `method_missing' from (irb):52 From: directory-dump@example.org To: lucas@example.com Subject: Dump of email_test Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=mimepart_443d7825cec9a_3f43..fdbeb1ba4328 --mimepart_443d7825cec9a_3f43..fdbeb1ba4328 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Here are the files currently in "email_test": --mimepart_443d7825cec9a_3f43..fdbeb1ba4328 Content-Type: image/jpeg; name=image.jpg Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=image.jpg /9j/4AAQSkZJRg== --mimepart_443d7825cec9a_3f43..fdbeb1ba4328 Content-Type: text/plain; name=text.txt Content-Transfer-Encoding: Quoted-printable Content-Disposition: attachment; filename=text.txt Here's some text.= --mimepart_443d7825cec9a_3f43..fdbeb1ba4328-- |
require 'net/smtp' Net::SMTP.start('smtp.example.org', 25, 'example.org', 'leonardr@example.org', 'my_password', :login) do |smtp| smtp.send_message(message_string, from_address, to_address) end |
... |
SocketError: getaddrinfo: Name or service not known from /usr/lib/ruby/1.8/net/protocol.rb:206:in `initialize' from /usr/lib/ruby/1.8/net/protocol.rb:206:in `old_open' from /usr/lib/ruby/1.8/timeout.rb:56:in `timeout' from /usr/lib/ruby/1.8/timeout.rb:76:in `timeout' from /usr/lib/ruby/1.8/net/protocol.rb:206:in `old_open' from /usr/lib/ruby/1.8/net/smtp.rb:393:in `do_start' from /usr/lib/ruby/1.8/net/smtp.rb:378:in `start' from /usr/lib/ruby/1.8/net/smtp.rb:316:in `start' from (irb):60 |