Apparently, merb’s approach to sending email is far better than ActiveMailer. However, I still find it quite annoying and heavyweight for simple applications. And most of the email notifications sent from web applications tend to be simple. In order to send emails via Merb, you need to create mailer views and mailer controllers and pass parameters between them carefully. I, for sure, always get confused which parameters to pass where and how incoming parameters get be exposed to the mailer view templates.
Here’s a simple routine to send emails right from within your merb controllers. Or any other place, for that matter.
gem install mailfactory gem install smtp_tls # if you need authentication or #want to use google smtp. # A quick google search will find it. # start sending emails: require 'mailfactory' require 'net/smtp' mail = MailFactory.new mail.from = 'your@company.com' mail.subject = 'Test' mail.html = 'html mail body' mail.text = "mail text , if it's not html" mail.replyTo = 'noreply@company.com' # repeat next line for each attachment mail.attach_as(file_path, 'filename to attach as', 'application/pdf') Net::SMTP.start( 'smtp.host.com', 25, 'from@domain.com', 'smtp username', 'smtp password', 'plain' # authentication method ) do |smtp| smtp.send_message(mail.to_s, 'from@address.com', 'to@address.com') end
I find this simpler since it’s encapsulated in one place. No need to create multiple files and impose entire MVC paradigm for sending emails. Let’s KISS.
