Paperclip and ActionMailer

11 views
Skip to first unread message

Maletor

unread,
Nov 23, 2009, 3:27:58 PM11/23/09
to Paperclip Plugin
I am trying to parse an email sent to my app server.
It should read the email to find the user by email then add the photo
to the user's photo models
Here is what I have so far. What am I doing wrong?

class Mailman < ActionMailer::Base

def receive(email)
logger.info("Got an email about: #{email.subject}")

if (@user = User.find_by_email(email.from))
if email.has_attachments?
for attachment in email.attachments
#@user.photos.create(:data_file_name =>
attachment.original_filename,
# :data_content_type =>
attachment.content_type, :data_file_size => attachment.size,
# :data_updated_at =>
Time.now.to_datetime)

@user.photos << attachment
# I don't think this is the right way to do this...
end
end
else
logger.info("No user found with email: #{email.from}")
end
end

end

class User < ActiveRecord::Base
acts_as_authentic
has_attached_file :avatar
has_many :photos, :dependent => :destroy
accepts_nested_attributes_for :photos
# What does this do?

end

class Photo < ActiveRecord::Base
belongs_to :user
has_attached_file :data
end

class AddAttachmentsDataToPhoto < ActiveRecord::Migration
def self.up
add_column :photos, :data_file_name, :string
add_column :photos, :data_content_type, :string
add_column :photos, :data_file_size, :integer
add_column :photos, :data_updated_at, :datetime
end

def self.down
remove_column :photos, :data_file_name
remove_column :photos, :data_content_type
remove_column :photos, :data_file_size
remove_column :photos, :data_updated_at
end
end

Maletor

unread,
Nov 26, 2009, 1:24:02 AM11/26/09
to Paperclip Plugin
Solved. Am now using attachment_fu with MM2RS. Works like a champ.

require 'mms2r'

class IncomingMailHandler < ActionMailer::Base

def receive(email)

mms = MMS2R::Media.new(email)
logger.info("Got an email titled: #{email.subject}")

if (@user = User.find_by_email(email.from))
@photo = Photo.new(:uploaded_data => mms.default_media, :title
=> mms.subject.empty? ? "Untitled" : mms.subject)
@user.photos << @photo
else
logger.info("No user found with email: #{email.from}")
end

mms.purge

end

end


On Nov 23, 3:27 pm, Maletor <eber...@gmail.com> wrote:
> I am trying to parse an email sent to my app server.
> It should read the email to find the user by email then add the photo
> to the user's photo models
> Here is what I have so far. What am I doing wrong?
>
> class Mailman < ActionMailer::Base
>
>   def receive(email)
>     logger.info("Got an email about: #{email.subject}")
>
>     if (@user = User.find_by_email(email.from))
>       if email.has_attachments?
>         for attachment in email.attachments
>           #...@user.photos.create(:data_file_name =>

Maletor

unread,
Nov 26, 2009, 1:38:48 AM11/26/09
to Paperclip Plugin
Final:
require 'mms2r'

class IncomingMailHandler < ActionMailer::Base

def receive(email)

mms = MMS2R::Media.new(email)

##
# Ok to find user by email as long as activate upon registration.
# Remember to make UI option that users can opt out of
registration
# and either not send emails or send them to a username
+32...@picpocket.com
# type address.
if (@user = User.find_by_email(email.from))
mms.media.each do |key, value|
if key.include('image')
@photo = Photo.new(:uploaded_data => value, :title =>
value.subject.empty? ? "Untitled" : value.subject)
@user.photos << @photo
end
else
##
# Remember to get SpamAssasin ;)
logger.info("No user found with email: #{email.from}")
end

mms.purge

end

end


Reply all
Reply to author
Forward
0 new messages