我正在尝试使用PostMarkApp并使用Rails gems(postmark -rails,postmark -gem和mail)将我系统的所有电子邮件通知集中在一个伞下.我已经成功创建了一个处理发送收据的邮件,但我无法收到忘记密码的电子邮件.我的开发日志显示Devise已发送消息,但我的收件箱中未收到任何电子邮件,并且PostMark信用额度未减少.
让Devise的邮件程序通过我的PostMark帐户发送的最佳或最简单的方法是什么?
来自config/environments/development.rb的代码段
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_key => "VALID_API_KEY_WAS_HERE" }
config.postmark_signature = VALID_POSTMARK_SIGNATURE_WAS_HERE
Run Code Online (Sandbox Code Playgroud)
我的邮件使用邮戳
class Notifier < ActionMailer::Base
# set some sensible defaults
default :from => MyApp::Application.config.postmark_signature
def receipt_message(order)
@order = order
@billing_address = order.convert_billing_address_to_hash(order.billing_address)
mail(:to => @order.user.email, :subject => "Your Order Receipt", :tag => 'order-receipt', :content_type => "text/html") do |format|
format.html
end
end
end
Run Code Online (Sandbox Code Playgroud)
通过让我的Notifier邮件程序扩展Devise :: Mailer并指定Devise使用我的通知程序作为邮件程序来解决它config/initializers/devise.rb
来自config/initializers/devise.rb的片段
# …Run Code Online (Sandbox Code Playgroud) 我使用动作邮件通过邮戳向用户发送邮件.这是我在控制器中的代码:
@users = User.where(some condition)
@product = Product.find_by_name(some name).first
for user in @users
UserMailer.new_product_arrival(user, @product, home_url).deliver
end
Run Code Online (Sandbox Code Playgroud)
这是我的user_mailer.rb
def new_product_arrival(user,product,home_url)
@from = Settings.mailer_from_address
@recipients = user.login
@sent_on = Time.now
@user = user
@product = product
@content_type = "text/html"
@home_url = home_url
end
Run Code Online (Sandbox Code Playgroud)
问题是,如果有超过10个用户,由于for循环需要很长时间.我需要知道我们是否可以通过使用多线程或后台作业来处理这个问题.我不想使用后台工作,但任何人都可以告诉我如何使用多线程实现上述功能.
我使用ruby 1.8.7和rails 3.0.7
有人可以将以下PostMark卷曲示例转换为pycurl吗?
curl -X POST "http://api.postmarkapp.com/email" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: ed742D75-5a45-49b6-a0a1-5b9ec3dc9e5d" \
-v \
-d "{From: 'sender@example.com', To: 'receiver@example.com', Subject: 'Postmark test', HtmlBody: '<html><body><strong>Hello</strong> dear Postmark user.</body></html>'}"
Run Code Online (Sandbox Code Playgroud) 我正在使用Postmark来处理我的Rails 3应用程序中的所有电子邮件,使用postmark-rails gem.
偶尔用户会引入错误的电子邮件或不存在的电子邮件,最终会给予硬弹跳.邮戳引发Postmark::InvalidMessageError错误以处理此问题,我的用户收到的错误是非描述性500错误.
我想将这些错误处理到我的响应界面中,我想知道什么是最好的策略.我现在有几个邮件已经有几十个,所以我不想begin-raise为所有这些方法添加块.将这种开始加注添加到控制器似乎也不是最优雅的解决方案.
我一直在阅读有关向rescue_from我添加块的内容ApplicationController,但后来我不知道如何在界面中处理这个(可能是通过调用使用errors方法的方法?)
我想在开始管道之前听听你的想法.
有任何想法吗?
内部控制器:
def update
@user.update({approved: true})
UserMailer.send_approved_mail(@user)
redirect_to(root_url)
end
Run Code Online (Sandbox Code Playgroud)
在user_mailer.rb中
class UserMailer < Devise::Mailer
def send_approved_mail(user)
@resource = user
email_body = render "user_activated_mail"
if @resource.valid?
client = Postmark::ApiClient.new(ENV["POSTMARK_API_KEY"])
client.deliver(from: ENV["POSTMARK_SIGNATURE"],
to: @resource.email, subject: "User Activation information.",
tag: 'account-activated', :content_type => "text/html",
html_body: email_body)
end
end
end
Run Code Online (Sandbox Code Playgroud)
在rails 4.1.0中,正在调用控制器中的方法并且正在发送电子邮件,但是在rails 4.2中,控制器中的邮件程序方法没有被调用,但是当从rails控制台调用时它可以工作.我为postmark api和配置文件做了所有必要的配置.唯一的事情是在rails 4.1.0中,控制器内部的邮件程序被调用,但在rails 4.2中,它从rails console调用时不起作用.究竟是什么原因无法弄明白.
我有一个域名注册domains.google.com,我使用G Suite帐户,也发送电子邮件来自SES和mailchimp.
我的DNS记录对我来说是正确的(Mailchimp说明):
@ TXT"v = spf1 include:_spf.google.com include:amazonses.com include:servers.mcsv.net~all"
_dmarc TXT"v = DMARC1; p = none; pct = 100; rua = mailto:re+aml1ryadtn7@dmarc.postmarkapp.com; sp = none; aspf = r;"
我使用邮戳的漂亮服务来获取每周DMARC摘要,并且他们为mailchimp电子邮件报告此错误:
mcsv.net有权代表mydomain.com发送,但看起来SPF仍未通过DMARC的对齐测试.DMARC查看邮件的返回路径,以确保其中的域与"发件人"地址中的域匹配.如果Return-Path路径与From地址不匹配,那么这些消息将无法通过DMARC的SPF对齐测试.请检查此来源,因为您可能需要设置自定义的返回路径.
以下是来自mailchimp电子邮件的相关标题:
Return-Path: <bounce-mc.us17_88978185.265251-recipient=patentbots.com@mail125.suw11.mcdlv.net>
From: me@mydomain.com
Run Code Online (Sandbox Code Playgroud)
设置(DNS或Mailchimp)中是否存在导致SPF DMARC对齐失败的错误?或者这是Mailchimp不支持的东西?
我有一个邮戳电子邮件模板,其中动态变量包含 html。但是,它将该 html 处理为纯文本。
更具体地说,我有下面的代码。该变量body被发送到电子邮件模板,但是<br><br>显示为文本,而不是转到下一行。
在控制器中:
const body = "Hi...<br><br> Welcome to our a new episode.";
client.sendEmailWithTemplate(
{
TemplateAlias: process.env.POSTMARK_TEMPLATE,
TemplateModel: {
body: body
},
From: from,
To: email,
});
Run Code Online (Sandbox Code Playgroud)
在邮戳模板中:
<tr>
<td>
1. The following includes text with a br break: {{body}}
</td>
</tr>
<tr>
<td>
2. This line includes a br break directly in the template: How are you? <br> Anything new?
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
这会生成一封电子邮件,其中 br 中断在位置 2 上起作用,但在位置 1 上不起作用。在位置 1 上<br> …
我正在使用 Webpack 来捆绑依赖项,其中之一是 emailing service postmark。这个服务依赖于一个叫做 node.js 的东西child_process。
问题是,当我尝试运行 webpack 来捆绑我的应用程序时,它会抱怨:
找不到模块:错误:无法解析模块“child_process”...
网上的大部分答案都说,针对这个错误,我应该添加以下行:
node: {
child_process: 'empty'
}
Run Code Online (Sandbox Code Playgroud)
到我的 webpack 配置。但这没有意义,因为 webpack 不会尝试查找 child_process,因此,当我运行我的应用程序时,我收到以下错误:
未捕获的类型错误:exec 不是函数
这是postmark(依赖的服务child_process)抱怨模块中的exec函数child_process不存在的错误。
因此,我想知道如何将child_process模块包含在我的构建中而不会有 webpack 抱怨?
我使用 CI 和 Postmark 应用程序来发送电子邮件。我已将 CI 邮件功能与邮戳应用程序一起使用。我已经使用他们的 SMTP 功能来发送电子邮件。
正在发送电子邮件,但所有电子邮件都在邮戳服务器上排队。知道为什么会发生这种情况吗?
顺便说一句,我正在使用免费帐户,并且我有 25000 积分。
我正在尝试弄清楚如何设置我的 Rails 4 应用程序,以便设计邮件程序使用邮戳模板通过邮戳发送。
我的 gem 文件中有 postmark-rails gem。
我一切正常,但我不知道如何将确认令牌提供给邮戳。
在邮戳我有这个模板:
To get started, please confirm your account below:
action_url_Value
Run Code Online (Sandbox Code Playgroud)
我不知道如何将以下行而不是操作 url 值放入模板中:
<%= link_to 'Confirm my account', confirmation_url(@resource, confirmation_token: @token) %></div>
Run Code Online (Sandbox Code Playgroud)
我已将以下内容添加到我的初始化程序/devise.rb 中:
config.mailer = 'PostmarkDeviseMailer'
Run Code Online (Sandbox Code Playgroud)
在 postmark_devise_mailer.rb 中,我有:
class PostmarkDeviseMailer < ActionMailer::Base
include Devise::Mailers::Helpers
def message
mail(
:subject => 'Hello from Postmark',
:to => 'sender@address.com',
:from => 'sender@address.comm',
:html_body => '<strong>Hello</strong> dear Postmark user.',
:track_opens => 'true')
end
end
default from: "sender@address.com"
def confirmation_instructions(record)
devise_mail(record, :confirmation_instructions)
end
def …Run Code Online (Sandbox Code Playgroud) postmark ×10
actionmailer ×2
devise ×2
codeigniter ×1
curl ×1
dmarc ×1
dns ×1
email ×1
gsuite ×1
javascript ×1
node.js ×1
php ×1
pycurl ×1
python-2.7 ×1
ruby-2.1 ×1
spf ×1
templates ×1
webpack ×1