Small Business Resources

I spend the better part of my time advising Small Business on the ins and outs of Online Marketing. Pop over to eBiz4Results.com for the full story.

Current Project

At the end of 2008, I launched BestMacTools.com where you will find reviews, and commentary mostly related to Productivity Tools for Mac OS X.

For Bloggers

It is now just about axiomatic... the most effective online marketing tool for any business is a Blog. That's why I publish Blog4Results.com.

Nov
16

Return-Path for ActionMailer

By Nigel Ball

Having spent several hours trying to get this to work, thought I’d share it with the world!

The Goal

When sending emails from an automated service like RSS:Forward it is common to want the return-path and the reply-to headers to be different.

This lets the receiver of the email reply to the author of the email while bounces are returned to another address which, presumably, updates the list database to ensure that bad email addresses are automatically removed from the list.

The Problem

Ruby on Rails does not support setting the return path when sending emails using ActionMailer

The Solution

  • Use sendmail to deliver emails.
  • Create your own perform_delivery_sendmail method

The Details

Make sure that you configure ActionMailer to use sendmail by adding the following line to your config/environment.rb file.

  config.action_mailer.delivery_method = :sendmail

Add to the top of your Mailer model so it looks like this…

  class SubscriptionMailer < ActionMailer::Base
 
    def perform_delivery_sendmail(mail)
      IO.popen("/usr/sbin/sendmail -i -t -fno-reply@your.domain.com","w+") do |sm|
       sm.print(mail.encoded.gsub(/\r/, ''))
       sm.flush
      end
    end
 
  ...

The Fine Print

This will presumably not work on the MS legacy operating system.

Use the code at your own risk … it works for me

If you have a better solution, please let me know.

Categories : Ruby on Rails

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.