停止来自 RubyGem 的大邮件通知

stop large size mails notification from a RubyGem

我正在开发 Rubygem ,基本上 gem 会发送电子邮件通知,但有时电子邮件太大,当客户端收到它时,他们的应用程序会崩溃。

注意:gem使用ActionMailer发送邮件

所以我想实现一种方法来阻止 gem 在邮件大小超过一定限制时发送邮件,而是将此通知发送给客户端 "Content is too large to be displayed"。

我还是 Ruby Rails 新手,我想创建一个方法,在发送邮件之前首先检查邮件的大小,然后通过一个 if 条件来查看它是否可以发送与否,但我不知道从哪里开始。

我假设您的邮件大小在增加,因为您在 ActionMailer 视图中循环呈现一些内容。

因此,添加该限制的一种简单方法是检查您的集合中有多少元素。如果超过某个数字,请说 "Content is too large" 否则渲染所有内容。

<% if @my_model.some_collection.size > 10 %>
  <p>Content is too large to be displayed.</p>
<% else %>
  <%= @my_model.some_collection.each do |elem| %>
    # ...
  <% end %>
<% end %>

或者

您可以使用其他 2 种方法:

  1. ActionMailer callbacks
  2. ActionMailer interceptors