当我说布局时我并不仅仅意味着视图,我生成那些.在我自己的邮件上,我正在使用默认布局.我在SomeMailer.rb文件中定义
#some_mailer.rb
class SomeMailer < ActionMailer::Base
layout 'sometemplate'
Run Code Online (Sandbox Code Playgroud)
我是否可以通过某种方式为Devise Mailer等人做到这一点?
我只是无法更改"密码重置说明"电子邮件的主题.我在Mailer中更改了notifer.rb以覆盖Devise默认电子邮件主题.但它不起作用.
在我的应用程序中,Devise .yml文件中有默认的电子邮件主题.但是我希望通过从数据库中提取数据来改变它.
这是在Rails 3.1中为Mailer和View提供帮助的最佳方法吗?
class EventMailer < ActionMailer::Base
include MailerHelper
helper :mailer
Run Code Online (Sandbox Code Playgroud)
我试过了
helper :mailer
Run Code Online (Sandbox Code Playgroud)
本身,但这不允许我在EventMailer类中使用帮助器.
我试过了
add_template_helper(MailerHelper)
Run Code Online (Sandbox Code Playgroud)
但有同样的问题.
是否可以将Google Docs用于Mailer模板?如何通过API更改模板变量?基本上,我想在Google上保留一个模板,并在更改了一些变量(如名称,地址等)后将其导出为PDF文件.是否可以通过PHP中的API完全完成?
编辑
LiveDocX提供这些功能,但我认为文档不可共享.
编辑
难道即使没有答案是可以接受的,我还是会因为赏金而接受一些答案吗?
是否有可能没有任何视图的Rails 3邮件?
处理纯文本邮件时,能够将正文放在邮件程序本身并且不必仅使用一行文本(或一个I18n键)就可以使用视图进行操作会很酷.
在某种程度上,我正在寻找类似ActionController的"render:text =>",但是对于ActionMailer.
您好我正在尝试使用php邮件程序类发送HTML电子邮件.问题是我想在我的电子邮件中包含php变量,同时使用包含以保持组织有序.继承人我的php邮件....
$place = $data['place'];
$start_time = $data['start_time'];
$mail->IsHTML(true); // set email format to HTML
$mail->Subject = "You have an event today";
$mail->Body = file_get_contents('../emails/event.html');
$mail->Send(); // send message
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有可能在event.html中有php变量?我试了这个没有运气(下面是event.html)..
<table width='600px' cellpadding='0' cellspacing='0'>
<tr><td bgcolor='#eeeeee'><img src='logo.png' /></td></tr>
<tr><td bgcolor='#ffffff' bordercolor='#eeeeee'>
<div style='border:1px solid #eeeeee;font-family:Segoe UI,Tahoma,Verdana,Arial,sans-serif;padding:20px 10px;'>
<p style=''>This email is to remind you that you have an upcoming meeting at $place on $start_time.</p>
<p>Thanks</p>
</div>
</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud) 我有一个包含图像的Rails3邮件程序布局.
这些使用如下:
image_tag("emails/top.gif", :width => "700", :height => "10", :alt => "")
Run Code Online (Sandbox Code Playgroud)
从Rails 2开始,这些图像包括主机并产生了预期的结果.但是,由于Rails3 config.action_mailer.default_url_options
似乎被忽略了.
有什么我想念的吗?
更新
我的config/environment/development.rb包括:
config.action_mailer.default_url_options = { :host => 'mydomain.tld' }
Run Code Online (Sandbox Code Playgroud) 我的邮件在rails 3.1上有一个内联附件.
要打开该附件,我使用此代码:
attachments["rails.png"] = File.read("#{Rails.root}/app/assets/images/Rails.png")
Run Code Online (Sandbox Code Playgroud)
有没有办法改变这种类似的东西assets_url
?
class UserPreview < ActionMailer::Preview
# Accessible from http://localhost:3000/rails/mailers/notifier/welcome_email
def welcome_email
UserMailer.welcome_email(User.first)
end
end
Run Code Online (Sandbox Code Playgroud)
我使用Ruby on Rails 4.1进行了这个简单的邮件预览.
如果我注释掉了我routes.rb
文件中的所有路由而只留下这个,那么邮件程序预览就会起作用:
MyTestApp::Application.routes.draw do
end
Run Code Online (Sandbox Code Playgroud)
所以显然我的一个权利是在默认的Rails之前用于邮件预览.
我需要输入路由rb文件?
我现在正在寻找解决方案几个小时:
我正在使用 NestJS 和 Nest Mailer 创建电子邮件服务。一切正常,直到我想在邮件中包含一个模板。这些模板是位于 src/mail/templates 中的 hbs 文件我知道 Nest 在编译时不包含非 TS 文件,因此:
我尝试配置 Nest-cli.json,添加了以下链接:
"compilerOptions": {
"assets":["**/*.hbs"],
"watchAssets": true,
}
Run Code Online (Sandbox Code Playgroud)
或者
"assets": [
{ "include": "**/*.hbs","watchAssets": true },
]
Run Code Online (Sandbox Code Playgroud)
我的 Nest-cli.json 文件如下所示:
{
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"assets": [
{ "include": "**/*.hbs","watchAssets": true },
]
}
}
Run Code Online (Sandbox Code Playgroud)
但没有任何内容被复制到 dist 文件夹中。所以我通过修改 package.json 来解决这个问题,添加了一个 cp 命令来手动执行此操作,但我认为这不是正确的方法...有人知道在资产中包含一些非 TS 文件吗
PS:hbs 用于车把(邮件模板)
感谢您的帮助 :)
mailer ×10
actionmailer ×2
devise ×2
php ×2
compilation ×1
google-docs ×1
helper ×1
image ×1
layout ×1
nestjs ×1
path ×1
preview ×1
routes ×1
ruby ×1
templates ×1
typescript ×1