From: "ara.t.howard" Date: 2008-01-16T05:56:41+09:00 Subject: Re: simple mail with Ruby On Jan 15, 2008, at 12:54 PM, Peter Bailey wrote: > Hi, > I just want Ruby to enable me to send simple e-mails, sometimes > with an > attachment, if possible. Here's all I want: > > To: pbailey@bna.com (that's me, as a test) > From: my account, whatever > Message: Some test text. More test text. And so on. > Attach: c:\simplestuff.pdf > > The e-mail server here at my company is Lotus Notes. I've used it for > years as an SMTP server. > > Thanks, > Peter > -- > Posted via http://www.ruby-forum.com/. > require "net/smtp" class Email class Error < ::StandardError; end USER = ENV["USER"] || ENV["USERNAME"] || ENV["LOGNAME"] attr_accessor "user" attr_accessor "from" attr_accessor "to" attr_accessor "subject" attr_accessor "message" attr_accessor "sent" alias_method "sent?", "sent" def initialize *a, &b options, messages = a.partition{|x| Hash === x} opts = options.inject({}){|h,o| h.update o} @user = opts["user"] || opts[:user] || USER @to = opts["to"] || opts[:to] || "#{ @user }@localhost.localdomain" @from = opts["from"] || opts[:from] || "#{ @user } @localhost.localdomain" @subject = opts["subject"] || opts[:subject] || "[RUBY EMAIL]" @sent = false @message = if messages.empty? opts["message"] || opts[:message] else messages.join end @message = b.call(self) if b email if @message end def email raise Error, "already sent!" if @sent msg = "To: %s\nFrom: %s\nSubject: %s\n\n%s" % [@to, @from, @subject, @message] Net::SMTP.start("localhost"){|smtp| smtp.send_message msg, @to, @from } @sent = true self end alias_method "email!", "email" end EMail = Email def EMail *a, &b EMail::new *a, &b end def Email *a, &b Email::new *a, &b end def email *a, &b Email::new *a, &b end if $0 == __FILE__ p(EMail("test 1 @ #{ Time::now }", "to" => "ara.t.howard@noaa.gov", "from" => "ara.t.howard@noaa.gov")) p(EMail("to" => "ara.t.howard@noaa.gov", "from" => "ara.t.howard@noaa.gov"){ "test 2 @ #{ Time::now }" }) p(EMail("to" => "ara.t.howard@noaa.gov"){ "test 3 @ # { Time::now }" }) end a @ http://codeforpeople.com/ -- it is not enough to be compassionate. you must act. h.h. the 14th dalai lama