Method: Mail::Message#initialize
- Defined in:
- lib/mail/message.rb
#initialize(*args, &block) ⇒ Message
Making an email
You can make an new mail object via a block, passing a string, file or direct assignment.
Making an email via a block
mail = Mail.new do |m|
m.from '[email protected]'
m.to '[email protected]'
m.subject 'This is a test email'
m.body File.read('body.txt')
end
mail.to_s #=> "From: [email protected]\r\nTo: you@...
If may also pass a block with no arguments, in which case it will be evaluated in the scope of the new message instance:
mail = Mail.new do
from '[email protected]'
# …
end
Making an email via passing a string
mail = Mail.new("To: [email protected]\r\nSubject: Hello\r\n\r\nHi there!")
mail.body.to_s #=> 'Hi there!'
mail.subject #=> 'Hello'
mail.to #=> '[email protected]'
Making an email from a file
mail = Mail.read('path/to/file.eml')
mail.body.to_s #=> 'Hi there!'
mail.subject #=> 'Hello'
mail.to #=> '[email protected]'
Making an email via assignment
You can assign values to a mail object via four approaches:
Examples:
mail = Mail.new
mail['from'] = '[email protected]'
mail[:to] = '[email protected]'
mail.subject 'This is a test email'
mail.body = 'This is a body'
mail.to_s #=> "From: [email protected]\r\nTo: you@...
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'lib/mail/message.rb', line 109 def initialize(*args, &block) @body = nil @body_raw = nil @separate_parts = false @text_part = nil @html_part = nil @errors = nil @header = nil @charset = self.class.default_charset @defaulted_charset = true @smtp_envelope_from = nil @smtp_envelope_to = nil @perform_deliveries = true @raise_delivery_errors = true @delivery_handler = nil @delivery_method = Mail.delivery_method.dup @transport_encoding = Mail::Encodings.get_encoding('7bit') @mark_for_delete = false if args.flatten.first.respond_to?(:each_pair) init_with_hash(args.flatten.first) else init_with_string(args.flatten[0].to_s) end # Support both builder styles: # # Mail.new do # to '[email protected]' # end # # and # # Mail.new do |m| # m.to '[email protected]' # end if block_given? if block.arity.zero? || (RUBY_VERSION < '1.9' && block.arity < 1) instance_eval(&block) else yield self end end self end |