This is great!
Can action mailbox be used with a gmail account or does it have to be one of the services listed?
stmp protocol supported.
Gmail's Default SMTP Settings
Gmail SMTP server address: smtp.gmail.com
Gmail SMTP username: Your Gmail address (e.g. [email protected])
Gmail SMTP password: Your Gmail password
Gmail SMTP port (TLS): 587
Gmail SMTP port (SSL): 465
Gmail SMTP TLS/SSL required: yes
action mailbox guide: https://edgeguides.rubyonrails.org/action_mailbox_basics.html#introduction
Sorry - I can't see how this should work. What I learned is, that gmail does not allow piping to a server, only forwarding to a different mail server. So for me it looks like it is not possible to use a gmail account for action mailbox. Please correct me if I'm wrong!
I would really appreciate a setup tutorial for action mailbox without any commercial service provicder.
I'm curious about testing with Gmail as well. At about 17:03, Chris mentions "using a tool like ngrok to expose your Rails app to the public internet," allowing you to "go to Gmail and send emails to your actual email address, routing them to your local Rails app for testing."
I set up my Rails app to route all emails, and configured ngrok. I tried sending to the the ngrok domain, "[email protected]," but the delivery failed. Not sure if this is the right approach, but I wasn't sure how else to use ngrok to send mail to my local app. Any insight is appreciated!
How difficult, assuming it’s possible, would it be to adjust this for receiving replies via SMS (to use the episode’s example)?
You can definitely do it, but you wouldn't be able to use ActionMailbox for that. You'd want to use something like Twilio and setup a controller to receive the webhooks they send. I've been planning on doing some Twilio stuff, so I'll have to do that soon!
How come the
inbound_mail objects are available to all instance methods?
This question is not only related to ActionMailbox, but i will still post it here as i never saw a similar use of "local variables" before your episode on ActionMailbox, altough i am not sure if those are actually "local variables".
In your replies_mailbox.rb you have the following code:
class RepliesMailbox < ApplicationMailbox def process return if user.nil? end def user @user =|| User.find_by(email: mail.from) # the mail object is available here end # … end
inbound_mail objects seem to be available to all instance methods of
RepliesMailbox. This is an interesting functionality because you don't have to define all methods like
def discussion_id(mail), if they all refer to the same
I am not sure if the mail and inbound_mail are actually "local variables" and maybe i am missing out on a fundamental knowledge of variable scope. But how come you can access those objects throughout all methods? Can this way of "reusing" variables be used in all Ruby / Rails code?
I'm struggeling getting it right. I can follow the explanation and already have an application coded. The thing I don't really understand is: How does my mail server deliver the mails to my mailbox application? Is it really "just" a single command like state here: https://github.com/rails/rails/blob/6-0-stable/actionmailbox/app/controllers/action_mailbox/ingresses/relay/inbound_emails_controller.rb#L41-L44
Will this command be executed for every mail on it's own or is this something one can configure in the mailserver? I - sadly - have no experience with mail servers.
Most people use Sendgrid or another service to handle mail servers. If you haven't done it before, you should use them and their inbound email functionality. It'll save you a ton of time trying to figure things out.
Yes - it mostly is just this line wich "formwards" the mail to your application.
I struggled most getting User/Permissions right so that the process which is running the mailserver can execute the bin/rails in the App Environment which will most likely be a different user.
Any guides/best practices appreciated...
Join 24,647+ developers who get early access to new screencasts, articles, guides, updates, and more.