ruby-on-rails - 在 rails 2.3.18 中使用邮件 gem 发送邮件

标签 ruby-on-rails ruby rubygems

我在 rails 2.3.18 中使用邮件 gem

class English < ActionMailer::Base
  def test
    subject       "testing attachments"
    recipients    "test@test1.com"
    from          "test@gmail.com"
    sent_on       Time.now
    content_type  "multipart/mixed"
    part :content_type => "multipart/alternative" do |alt|
      alt.part "text/plain" do |plain|
        plain.body "hello"
      end
    end
    attachment :body => "test", :filename => '추적_.pdf'
  end
end

当我发送电子邮件时,如果文件名不是英文的,文件名就会损坏 当它是非英文字符时我工作得很好

邮件对象看起来像这样:

 #<Mail::Message:70182593794020, Multipart: true, Headers: <Date: Sat, 11 Jan 2014 11:30:51 +0530>, <From: test@gmail.com>, <To:
 test@test1.com>, <Message-ID:
 <52d0de1454a_b9c93fd4a18349dc100290@sumans-MacBook-Pro-2.local.mail>>,
 <Subject: testing attachments>, <Mime-Version: 1.0>, <Content-Type:
 multipart/mixed;
 boundary=--==_mimepart_52d0de13eaf0a_b9c93fd4a18349dc9982>,
 <Content-Transfer-Encoding: 7bit>>

mail.parts

 [#<Mail::Message:70182595011140, Multipart: true, Headers: <Date: Sat,
 11 Jan 2014 11:30:51 +0530>, <Message-ID:
 <52d0de13f1aea_b9c93fd4a18349dc100029@sumans-MacBook-Pro-2.local.mail>>,
 <Mime-Version: 1.0>, <Content-Type: multipart/alternative;
 boundary=--==_mimepart_52d0de13e9676_b9c93fd4a18349dc997cb>,
 <Content-Transfer-Encoding: 7bit>>, #<Mail::Message:70182595276760,
 Multipart: true, Headers: <Date: Sat, 11 Jan 2014 11:30:51 +0530>,
 <Message-ID:
 <52d0de13f35ca_b9c93fd4a18349dc1001bc@sumans-MacBook-Pro-2.local.mail>>,
 <Mime-Version: 1.0>, <Content-Type: multipart/mixed; name=추적_.pdf>,
 <Content-Transfer-Encoding: base64>, <content-disposition: attachment;
 filename=추적_.pdf>>]

这里的文件名是正确的,但是当我发送电子邮件时使用

smtp.sendmail(mail.encoded, sender, destinations) the filename is corrupt

邮件编码

> "Date: Sat, 11 Jan 2014 11:30:51 +0530\r\nFrom: test@gmail.com\r\nTo:
> test@test1.com\r\nMessage-ID:
> <52d0de1454a_b9c93fd4a18349dc100290@sumans-MacBook-Pro-2.local.mail>\r\nSubject:
> testing attachments\r\nMime-Version: 1.0\r\nContent-Type:
> multipart/mixed;\r\n
> boundary=\"--==_mimepart_52d0de13eaf0a_b9c93fd4a18349dc9982\"\r\nContent-Transfer-Encoding:
> 7bit\r\n\r\n\r\n----==_mimepart_52d0de13eaf0a_b9c93fd4a18349dc9982\r\nDate:
> Sat, 11 Jan 2014 11:30:51 +0530\r\nMessage-ID:
> <52d0de13f1aea_b9c93fd4a18349dc100029@sumans-MacBook-Pro-2.local.mail>\r\nMime-Version:
> 1.0\r\nContent-Type: multipart/alternative;\r\n boundary=\"--==_mimepart_52d0de13e9676_b9c93fd4a18349dc997cb\"\r\nContent-Transfer-Encoding:
> 7bit\r\n\r\n\r\n----==_mimepart_52d0de13e9676_b9c93fd4a18349dc997cb\r\nDate:
> Sat, 11 Jan 2014 11:30:51 +0530\r\nMessage-ID:
> <52d0de13f01cb_b9c93fd4a18349dc999bc@sumans-MacBook-Pro-2.local.mail>\r\nMime-Version:
> 1.0\r\nContent-Type: text/plain;\r\n charset=utf-8\r\nContent-Transfer-Encoding:
> quoted-printable\r\nContent-Disposition:
> inline\r\n\r\nhello=\r\n\r\n----==_mimepart_52d0de13e9676_b9c93fd4a18349dc997cb--\r\n\r\n----==_mimepart_52d0de13eaf0a_b9c93fd4a18349dc9982\r\nDate:
> Sat, 11 Jan 2014 11:30:51 +0530\r\nMessage-ID:
> <52d0de13f35ca_b9c93fd4a18349dc1001bc@sumans-MacBook-Pro-2.local.mail>\r\nMime-Version:
> 1.0\r\nContent-Type: multipart/mixed;\r\n charset=UTF-8\r\nContent-Transfer-Encoding:
> base64\r\ncontent-disposition: =?UTF-8?Q?attachment;?=\r\n
> =?UTF-8?Q?_filename=3D=E1=84=8E=E1=85=AE=E1=84=8C=E1=85=A5=E1=86=A8=5F.pdf?=\r\n\r\ndGVzdA==\r\n\r\n----==_mimepart_52d0de13eaf0a_b9c93fd4a18349dc9982--\r\n"

谁能告诉我邮件 gem 中的编码方法出了什么问题我在邮件中收到的文件名是 noname ,英文字符正常工作

最佳答案

尝试

class English < ActionMailer::Base
    def test
        subject       "testing attachments"
        recipients    "test@test1.com"
        from          "test@gmail.com"
        sent_on       Time.now
        content_type  "multipart/mixed; charset=UTF-8"
        part :content_type => "multipart/alternative; charset=UTF-8" do |alt|
            alt.part "text/plain;  charset=UTF-8" do |plain|
                plain.body "hello"
            end
        end
        attachment :body => "test", :filename => '추적_.pdf'
        charset = "UTF-8"
        content_transfer_encoding = '8bit'
    end
end

关于ruby-on-rails - 在 rails 2.3.18 中使用邮件 gem 发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21059123/

相关文章:

mysql - rake 中止!未初始化的常量 Mysql2

ruby-on-rails - Rails应用程序无法在AWS Elastic Beanstalk上运行,sqlite3错误

ruby-on-rails - 如何将排序移动到数据库级别

ruby-on-rails - 我无法在我的 Ruby on Rails 应用程序中集成 Bootstrap

ruby :类 << self ; def 方法 VS. def self.方法

ruby-on-rails - 如何在 Windows 上安装 Linux Rails gem

ruby-on-rails - 哪个适用于多用户 Ruby 设置? RVM 还是 RBenv?

css - rails 单选按钮水平 flexbox

ruby - ruby 哈希中 bool 值的排列

ruby-on-rails - Rails 有没有办法管理有序列表?这样每个项目都有一个位置,如果删除一个元素,位置会自动更新吗?