Return-Path for ActionMailer

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

h3. 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.

h3. The Problem

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

h3. The Solution

* Use sendmail to deliver emails.
* Create your own @perform_delivery_sendmail@ method

h3. 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 [email protected]","w+") do |sm|
       sm.print(mail.encoded.gsub(/\r/, ''))
       sm.flush
      end
    end
 
  ...

h3. 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.

9 Replies to “Return-Path for ActionMailer”

  1. I rely on the Akismet plugin to protect from spam comments on all of my blogs. I don’t really know how many true comments are treated as spam, but I certainly don’t have much problem with managing spam which is transparently filtered by the plugin.

  2. Hi nice post, i read your blog from time to time but i was wondering something. I also run a blog on a similar topic, but i get 1,000’s of spam comments and emails every day does that happen to you.. Any ideas to stop it? I currently have commenting disabled but i want to turn it back on.. Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *