我正在使用Rails 3.2.13,并且一直在遵循ActionMailer指南( http://guides.rubyonrails.org/action_mailer_basics.html#sending-emails-with-attachments ),但是我在发送电子邮件时遇到了困难附件。

执行后,电子邮件会正确发送,但附件始终会损坏。 特别是,我看到了呈现的电子邮件和附件的正确文件名,但显示为无法打开的1KB文件。 我已经在堆栈溢出和其他地方看到了类似的问题(例如, Rails 3:发送带有附件的邮件-首次发送后文件损坏以及Rails 3.0.7 ActionMailer附件问题 ),但是所提供的解决方案均无济于事。 我尝试了两种不同的传输方式(Gmail SMTP和Sendgrid),几种文件类型(png,pdf等),以及内联附件和普通附件,但始终具有相同的效果。

这是邮件程序的代码:

class UserMailer < ActionMailer::Base

    # A hash of default values for email messages
    default from: "me@mysite.com"

    def welcome_email(user)
        @user = user
        @url = "http://localhost:3000"

        attachments['logo_email.png'] = File.read("public/img/logo_email.png")

        mail(:to => user.email, :subject => "Welcome")
    end
end

我在控制器中调用它的地方看起来像这样(我在这里使用delay_job,但是即使没有附件,附件也会损坏):

UserMailer.delay.welcome_email(@user)

===============>>#1 票数:6

显然,这是Windows行为(不读取),这仅是Windows的行为。您需要在Windows中为Ruby指定“ r”(只读)和“ b”(二进制),以正确读取文件。 http://ruby-doc.org/core-1.9.3/IO.html

请参阅以下相关问题

将本地文件的内容读入Rails中的变量

请尝试以下操作:

attachments['logo_email.png'] = File.read("public/img/logo_email.png", mode: "rb")

  ask by The Doge Prince translate from so

未解决问题?本站智能推荐:

1回复

Rails ActionMailer中的附件出现问题

我正在使用以下代码(如《 Rails指南》中所述): 收到电子邮件时,我有一个名为noname的文件,其中附加了以下内容,而不是我的图像: 我正在使用Rails 3.2.2.22。 如何解决这个问题?
1回复

我可以选择使用Ruby On Rails中的ActionMailer在电子邮件中显示附件的位置吗?

对于我发送的一封电子邮件,我的邮件中有以下声明。 通常,PDF文档出现在电子邮件的底部,这是设计使然。 但是,对于我的一封电子邮件,我想选择PDF附件在电子邮件中的显示位置。 我了解可用于图像的image_tag附件语句。 我可以在电子邮件中放置PDF附件的文档是否存在类
1回复

ActionMailer对Rails的怀疑

我的应用程序具有很多模块,例如配置文件,位置,注释等。因此,为了在发生有趣的事情(例如新注释,新位置)时发送邮件,我是否需要创建许多邮件程序类(ProfileMailer,PlaceMailer,CommentMailer)和还有相应的观察者类来实现邮件?
1回复

带有可确认链接的rails actionmailer

我在Rails应用程序中使用了Actionmailer来发送欢迎电子邮件并链接到该应用程序,但是在http://guides.rubyonrails.org/action_mailer_basics.html中没有像Actionmailer这样的可确认的消息: devise :regist
4回复

Actionmailer不使用rails 3传递邮件

我正在尝试创建一个应用程序,在用户注册时发送电子邮件。 我在config / application.rb文件中输入了gmail的smtp设置,邮件功能看起来像 现在,当我看到日志时,我看到它说邮件已被发送,但我从来没有收到任何邮件...... 另外,当我调用邮件传递函数Em
1回复

Rails模拟ActionMailer发送失败

我有ActionJob ,它可以发送一些邮件,在失败时可以进行挽救并更新数据库记录,当然,我想为此工作编写一些规范,但是我非常困惑如何对其进行测试。 是否可以模拟邮件发送失败或我如何测试工作的任何想法?
2回复

Rails中的ActionMailer Mandrill问题

我有一个在Rails中创建的出租车预订平台。 我正在生产中使用Mandrill smtp设置向我的平台用户发送预订确认邮件。 然后,我用以下代码生成了一个名为user_mailer的邮件程序: 然后,我在user_mailer视图中创建了booking_confirmation.ht
3回复

Rails:如何单独使用ActionMailer?

我正在创建一个用于发送电子邮件的应用。 我不需要使用常规邮件程序和查看模板,因为我只是接收将用于生成电子邮件的数据。 但是,我认为使用ActionMailer而不是直接与SMTP交互有一些好处。 我在尝试实例化ActionMailer::Base的新实例时遇到了问题。 如何在不必定义扩展
1回复

Rails管理员/ Actionmailer

我正在构建一个仅使用rails_admin收集数据的简单应用程序。 我设置了不同类型的用户来查看和编辑不同的模型。 使用rials_admin创建记录时,我想发送记录的摘要电子邮件。 由于我没有该模型的专用控制器,因此该在哪里创建此动作?
3回复

Rails ActionMailer lib目录

我正在尝试从lib目录中的文件发送邮件。 我使用了Action Mailer基础知识来帮助我进行配置。 我可以从控制器成功发送邮件,因此我认为我的问题不是在我的lib文件“ filename.rb”中正确要求邮件发送程序。 我运行ruby filename.rb并获取 file