我有一个应该发送此文件的ActionMailer控制器:
/user_mailer/welcome_email.text.erb
这是文件的(样本)内容:
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
[编辑] 这是控制器中的代码:
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
这是UserMailer中的代码&lt;的ActionMailer ::基
def welcome_email(user)
@user = user
@url = "http://znood.com/"
mail(:to => user.email, :subject => "Welcome to Znood!")
end
这是我收到的电子邮件:
Welcometoznood.com,AbdoAchkarYouhavesuccessfullysigneduptoznood.com,Yourusernameis:blabla.Tologintothesite,justfollowthislink:http://znood.com/.Thanksforjoiningandhaveagreatday!TheZnoodTeam
如何包含空格,回车和换行的任何线索?
[编辑] 安装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
我尝试更改“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
“Hellothere!”也出来整理。
然后我尝试了下面的代码,以确定是否是导致错误的渲染或邮件功能。
mail(:to => user.email, :subject => "Welcome to Znood!") do |format|
format.text { "hello there!" }
end
也出来整理。
答案 0 :(得分:1)
默认情况下,邮件程序应该发送文本电子邮件 - 这可能发生在客户端。真正的解决方案是同时拥有文本和HTML模板(或者通过技巧(或者只是Markdown),如果它们同样简单,则使用相同的模板。
答案 1 :(得分:0)
我设置了一个继承自ActionMailer::Base
的类,然后在那里创建了welcome_email
方法。然后在你的控制器中调用FooMailer.welcome_email(@user.email).deliver
。如果你这么做的话要考虑把它转移到resque或延迟工作。
如果间距有问题,您是否尝试创建welcome_email.html.erb
并将其发送出去?您可以在welcome_email
方法中指定使用html(有或没有布局),如下所示:
def welcome_email(user)
@user = user
@url = "http://znood.com/"
mail(:to => user.email, :subject => "Welcome to Znood!") do |format|
format.html #{ render :layout => 'my_layout' }
end
end
您可以观看Ryan Bates RailsCast#206 here以查看其使用情况,并且他还展示了一种在发送电子邮件之前拦截电子邮件的方法,以便您可以看到它们的外观。更简单的方法是使用他的letter opener gem它在浏览器中打开电子邮件(在开发模式下使用)。
答案 2 :(得分:0)
我花了一段时间才解决。问题不在于ActionMailer。
如果您遇到此问题,请首先确保不是您的代码或导致此问题的宝石。启动一个新的rails应用程序并使用它测试ActionMailer。 (感谢@RubyCyanide提出此建议)
在我的情况下,我在join
初始化程序中使用了String class
函数。您或您正在使用的宝石很可能与Mail的连接功能发生冲突。
希望这有帮助!