通常のクライアントを使用してIMAPアカウントのSMTP経由で電子メールを送信すると、その送信電子メールはIMAPの[送信済み]ボックスに保存されます。
Ruby on Rails ActionMailerを使用してメールを送信するときに同じ動作をするにはどうすればよいですか?
通常のクライアントを使用してIMAPアカウントのSMTP経由で電子メールを送信すると、その送信電子メールはIMAPの[送信済み]ボックスに保存されます。
Ruby on Rails ActionMailerを使用してメールを送信するときに同じ動作をするにはどうすればよいですか?
Ruby IMAPライブラリには、append
これらの送信メールを選択したフォルダに「保存」するために使用できるメソッドが含まれています。
# Let's assume the_mail is the Mail object you want to save
the_mail = Mail.new
# The name of the target mailbox
target_mailbox = 'Sent'
# Connect to the IMAP server
imap = Net::IMAP.new(YOUR_EMAIL_SERVER)
imap.authenticate('PLAIN', YOUR_LOGIN, YOUR_PASSWORD)
# Create the target mailbox if it does not exist
imap.create(target_mailbox) unless imap.list('', target_mailbox)
# Save the message
imap.append(target_mailbox, the_mail.to_s)
# Close the connection
imap.logout
imap.disconnect
お役に立てれば!
私の知る限り、これはメールクライアントプログラムの設定になる傾向があります。しかし、ActionMailerではあまりサポートされていません。
メッセージがサーバーに保存されているのに、間違った場所に保存されていることがわかった場合は、rubyIMAPライブラリがあります。http://ruby-doc.org/stdlib/libdoc/net/imap/rdoc/index.html
回避策は、たとえばsender@yourdomain.com
、などのタグを使用して、すべてのメッセージを元の電子メールアドレスに送信sender+sent@yourdomain.com
し、この受信トレイを表示するクライアントにルールを設定して、それを含むすべての電子メールをTO:
[送信済みアイテム]ボックスにルーティングすることです。
RailsアプリケーションのメールサーバーとしてGmailを使用している場合は、送信されたメールにコピーが自動的に保存されます。