【问题标题】:How to save copy of outgoing email in IMAP "Sent" box using ActionMailer?如何使用 ActionMailer 在 IMAP“已发送”框中保存传出电子邮件的副本?
【发布时间】:2011-02-14 07:56:41
【问题描述】:

当我使用常规客户端并通过 SMTP 为 IMAP 帐户发送电子邮件时,该出站电子邮件会保存在 IMAP“已发送”框中。

当我使用 Ruby on Rails ActionMailer 发送电子邮件时,如何才能有相同的行为?

【问题讨论】:

  • 这是一个很好的问题,但标题很混乱。我为你更新了。

标签: ruby-on-rails imap actionmailer


【解决方案1】:

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

希望这会有所帮助!

【讨论】:

【解决方案2】:

据我所知,这往往是您的邮件客户端程序中的一个设置;但我在 ActionMailer 中没有看到太多支持。

有一个 ruby​​ IMAP 库,如果您发现邮件存储在服务器上,但只是在错误的位置。 http://ruby-doc.org/stdlib/libdoc/net/imap/rdoc/index.html

一种解决方法可能是将每封邮件发送到您的原始电子邮件地址,例如sender@yourdomain.com,可能带有sender+sent@yourdomain.com 之类的标签,然后在您将要查看此收件箱的客户端中设置一条规则以路由所有邮件带有 TO: 的电子邮件发送到“已发送邮件”框。

如果您使用 gmail 作为您的 rails 应用程序的邮件服务器,它会自动在发送的邮件中保存一份副本。

【讨论】:

  • 如果我们只使用常规 IMAP 而不是 gmail 怎么办?
  • 我没有通过谷歌找到太多关于这个问题的信息。请参阅上面的更改以了解替代解决方法。
猜你喜欢
  • 2011-09-19
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2021-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多