如何通过ActionMailer在Ruby on Rails中保存已发送邮件的IMAP副本?

更新于
2026-10-10 00:10:33
1阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计586个文字,预计阅读时间需要3分钟。

如何通过ActionMailer在Ruby on Rails中保存已发送邮件的IMAP副本?

当我在常规客户端端使用SMTP为IMAP账户发送电子邮件时,该电子邮件将被保存在已发送框中。若想使用Ruby on Rails ActionMailer发送电子邮件并实现相同行为,可以按照以下步骤操作:

1. 在你的Rails项目中,确保已经安装了ActionMailer。

2.在你的控制器中,创建一个方法来发送电子邮件。

3.在该方法中,使用ActionMailer的`mail`方法来发送邮件。

4.设置邮件的`to`和`subject`等属性。

5.使用`deliver_now`或`deliver_later`方法来发送邮件。

以下是一个简单的示例代码:

ruby

class EmailsController

mail.deliver_now # 或者使用异步发送 # mail.deliver_later

# 发送邮件后,将邮件添加到IMAP账户的已发送文件夹 # 这通常需要使用IMAP客户端库,如Net::IMAP # 以下是一个示例,具体实现可能需要根据你的需求调整 imap=Net::IMAP.new('imap.example.com', port: 993, ssl: true) imap.login('your-email@example.com', 'your-password') imap.examine('Sent')

# 创建邮件消息 message=Net::IMAP::Message.new(imap) message.from=['your-email@example.com'] message.to=['recipient@example.com'] message.subject='Test Email' message.date=Time.now message.body='This is a test email.'

# 将邮件添加到已发送文件夹 imap.append('Sent', message)

如何通过ActionMailer在Ruby on Rails中保存已发送邮件的IMAP副本?

imap.logout imap.disconnect endend

请注意,上述代码仅为示例,实际应用中可能需要根据你的具体需求进行调整。

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

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

根据我的说法,这往往是您邮件客户端程序中的一个设置;但我在ActionMailer中看不到它的支持.

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

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

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

本文共计586个文字,预计阅读时间需要3分钟。

如何通过ActionMailer在Ruby on Rails中保存已发送邮件的IMAP副本?

当我在常规客户端端使用SMTP为IMAP账户发送电子邮件时,该电子邮件将被保存在已发送框中。若想使用Ruby on Rails ActionMailer发送电子邮件并实现相同行为,可以按照以下步骤操作:

1. 在你的Rails项目中,确保已经安装了ActionMailer。

2.在你的控制器中,创建一个方法来发送电子邮件。

3.在该方法中,使用ActionMailer的`mail`方法来发送邮件。

4.设置邮件的`to`和`subject`等属性。

5.使用`deliver_now`或`deliver_later`方法来发送邮件。

以下是一个简单的示例代码:

ruby

class EmailsController

mail.deliver_now # 或者使用异步发送 # mail.deliver_later

# 发送邮件后,将邮件添加到IMAP账户的已发送文件夹 # 这通常需要使用IMAP客户端库,如Net::IMAP # 以下是一个示例,具体实现可能需要根据你的需求调整 imap=Net::IMAP.new('imap.example.com', port: 993, ssl: true) imap.login('your-email@example.com', 'your-password') imap.examine('Sent')

# 创建邮件消息 message=Net::IMAP::Message.new(imap) message.from=['your-email@example.com'] message.to=['recipient@example.com'] message.subject='Test Email' message.date=Time.now message.body='This is a test email.'

# 将邮件添加到已发送文件夹 imap.append('Sent', message)

如何通过ActionMailer在Ruby on Rails中保存已发送邮件的IMAP副本?

imap.logout imap.disconnect endend

请注意,上述代码仅为示例,实际应用中可能需要根据你的具体需求进行调整。

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

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

根据我的说法,这往往是您邮件客户端程序中的一个设置;但我在ActionMailer中看不到它的支持.

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

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

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