如何通过ActionMailer在Ruby on Rails中保存已发送邮件的IMAP副本?
- 内容介绍
- 文章标签
- 相关推荐
本文共计586个文字,预计阅读时间需要3分钟。
当我在常规客户端端使用SMTP为IMAP账户发送电子邮件时,该电子邮件将被保存在已发送框中。若想使用Ruby on Rails ActionMailer发送电子邮件并实现相同行为,可以按照以下步骤操作:
1. 在你的Rails项目中,确保已经安装了ActionMailer。
2.在你的控制器中,创建一个方法来发送电子邮件。
3.在该方法中,使用ActionMailer的`mail`方法来发送邮件。
4.设置邮件的`to`和`subject`等属性。
5.使用`deliver_now`或`deliver_later`方法来发送邮件。
以下是一个简单的示例代码:
ruby
class EmailsControllermail.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)
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分钟。
当我在常规客户端端使用SMTP为IMAP账户发送电子邮件时,该电子邮件将被保存在已发送框中。若想使用Ruby on Rails ActionMailer发送电子邮件并实现相同行为,可以按照以下步骤操作:
1. 在你的Rails项目中,确保已经安装了ActionMailer。
2.在你的控制器中,创建一个方法来发送电子邮件。
3.在该方法中,使用ActionMailer的`mail`方法来发送邮件。
4.设置邮件的`to`和`subject`等属性。
5.使用`deliver_now`或`deliver_later`方法来发送邮件。
以下是一个简单的示例代码:
ruby
class EmailsControllermail.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)
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应用程序的邮件服务器,它会自动将副本保存在已发送的邮件中.

