Skip to content

Instantly share code, notes, and snippets.

@genesem
Forked from choonkeat/diy.cloudmailin.bash
Created July 17, 2017 09:09
Show Gist options
  • Save genesem/c4cf8463646693367dc30ea7ccd091ef to your computer and use it in GitHub Desktop.
Save genesem/c4cf8463646693367dc30ea7ccd091ef to your computer and use it in GitHub Desktop.
receiving (postfix) emails via (rails) http; using file upload (-F) for less verbose Rails log (otherwise use --data-urlencode)
#!/bin/bash
MAILFILE=/tmp/mail.$$
CURLFILE=/tmp/mail.$$.curl
cat > $MAILFILE
curl -i -F message=@$MAILFILE "http://localhost/incoming_messages" > $CURLFILE
if grep 'HTTP/1.1 204 No Content' $CURLFILE
then
rm -f $CURLFILE $MAILFILE
fi
class IncomingMessagesController < ApplicationController
def create
raw = params[:message].respond_to?(:read) && params[:message].read || params[:message]
mail = Mail.new(raw)
# do stuff
head(:no_content) # bash script will detect 204 and rm -rf tmp files
end
end
mailbox_command = /somewhere/diy.cloudmailin.bash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment