ActionMailer不在文本邮件程序中显示空格

Abd*_*bdo 9 ruby-on-rails actionmailer ruby-on-rails-3 ruby-on-rails-3.1

我有一个应该发送此文件的ActionMailer控制器:

/user_mailer/welcome_email.text.erb
Run Code Online (Sandbox Code Playgroud)

这是文件的(示例)内容:

Welcome to znood.com, <%= @user.name %>

You have successfully signed up to znood.com,
Your username is: <%= @user.email %>.

To login to the site, just follow this link: <%= @url %>.

Thanks for joining and have a great day!

The Znood Team
Run Code Online (Sandbox Code Playgroud)

[编辑]这是控制器中的代码:

def sendmail
        @user = User.first
        UserMailer.welcome_email(@user).deliver
        render "user_mailer/welcome_email.text"
        #render the file to see what we're supposed to send
end
Run Code Online (Sandbox Code Playgroud)

这是UserMailer <ActionMailer :: Base中的代码

 def welcome_email(user)
    @user = user
    @url  = "http://znood.com/"
    mail(:to => user.email, :subject => "Welcome to Znood!") 
  end
Run Code Online (Sandbox Code Playgroud)

这是我收到的电子邮件:

Welcometoznood.com,AbdoAchkarYouhavesuccessfullysigneduptoznood.com,Yourusernameis:blabla.Tologintothesite,justfollowthislink:http://znood.com/.Thanksforjoiningandhaveagreatday!TheZnoodTeam
Run Code Online (Sandbox Code Playgroud)

任何线索如何包括空格,回车和换行?

[edit]安装letter_opener gem后,我在控制台中看到以下内容:

----==_mimepart_4ea9882a2735c_1c782d964bc18193

Date: Thu, 27 Oct 2011 19:34:50 +0300

Mime-Version: 1.0

Content-Type: text/plain;

 charset=UTF-8

Content-Transfer-Encoding: 7bit

Content-ID: <4ea9882a2d8ee_1c782d964bc18277@lenovo-PC.mail>



Welcometoznood.com,AbdoAchkarYouhavesuccessfullysigneduptoznood.com,Yourusername
is:blabla.Tologintothesite,justfollowthislink:http://znood.com/.Thanksforjoiningandhaveagreatday!TheZnoodTeam
Run Code Online (Sandbox Code Playgroud)

我尝试更改"Content-Transfer-Encoding"标题,但它们似乎没有改变.我也试过为它设置一个默认值.看起来我们坚持使用7位编码.

[编辑]另一个应该帮助我们找到问题的是我尝试将以下参数传递给mail函数,以查看文件渲染器是否有问题:

   mail(:to => user.email, :subject => "Welcome to Znood!") do |format|
        #format.text(:content_transfer_encoding => "base64")
        format.text { render :text => "Hello there!" }
    end
Run Code Online (Sandbox Code Playgroud)

"你好!" 也出来整理.

然后,我尝试了下面的代码,以确定是否是导致错误的渲染或邮件功能.

mail(:to => user.email, :subject => "Welcome to Znood!") do |format|
        format.text { "hello there!" }
end
Run Code Online (Sandbox Code Playgroud)

也出来整理.

Abd*_*bdo 0

这花了我一段时间才解决。问题不在于 ActionMailer。

如果您遇到此问题,请首先确保不是您的代码或 gem 导致此问题。启动一个新的 Rails 应用程序并用它测试 ActionMailer。(感谢@RubyCyanide 的建议)

就我而言,它是join我的String class初始化程序中的一个函数。您或您正在使用的 gem 很可能与 Mail 的 join 功能发生冲突。

希望这可以帮助!