我们公司的WLAN网管采用ruby on rails架构,同时通过actionmailer自动发送邮件。
近来吉林电信遇到了点问题,导致邮件发送不出去,总结的话主要是两个问题。
第一个问题是:邮件内容编码的问题。
通过activerecord查询上来的的内容不是UTF-8编码的,需要把他进行转换,这个在其他现场没有发现,吉林是32的服务器,然后环境是另外一个同事装的,应该跟环境也有一定的问题。
解决方案:通过
def scanadd( str, force = false )
types = ''
strs = []
if str.respond_to?(:encoding)
enc = str.encoding
str.force_encoding("UTF-8")
end
force_encoding的方法把字符集进行替换。
第二个问题是: gmail不发邮件的问题
gmail的smtp服务器是要https的,所以要通过require "smtp_tls"来的,研发把这个东西给禁用掉了,导致邮件发送不了。
解决方案: gem install -l action_mailer_tls-1.1.3.gem --no-ri --no-rdoc
然后在 app/model/user_mailer.rb中
require 'smtp_tls'
module ActionMailer
module Quoting #:nodoc:
def quote_if_necessary(text, charset)
text = text.dup.force_encoding("UTF-8") if text.respond_to?(:force_encoding)
(text =~ CHARS_NEEDING_QUOTING) ?
quoted_printable(text, charset) :
text
end
end
end
module TMail
class Encoder
def scanadd( str, force = false )
types = ''
strs = []
if str.respond_to?(:encoding)
enc = str.encoding
str.force_encoding("UTF-8")
end
until str.empty?
if m = /\A[^\e\t\r\n ]+/.match(str)
types << (force ? 'j' : 'a')
if str.respond_to?(:encoding)
strs.push m[0].force_encoding(enc)
else
strs.push m
……
故障解决。
测试参考:
在Rails console中可以使用ActionMailer::Base.smtp_settings查看当前环境的smtp设置。:
# ruby script/console
Loading development environment (Rails 2.3.5)
=>
?> ActionMailer::Base.smtp_settings
=> {:password=>"**********", :address=>"smtp.gmail.com", :port=>587, :authentication=>:plain, :user_name=>"jilin.wlan@gmail.com"}
>>
# 设置邮件内容的默认编码集
ActionMailer::Base.default_charset = "UTF-8"
# 定义ActionMailer::Base的子类
class SimpleMailer < ActionMailer::Base
# 定义一个自定义方法
def simple_message()
# 设置发件人地址
from 'caoruijian@stos.com'
# 设置收件人地址
recipients 'caoruijian@stos.com'
# 设置邮件标题
subject 'Hello rails email'
# 设置邮件内容
body "This is content! Send time at #{Time.now}, 看到的这是中文"
end
end
# 创建邮件,并发送
SimpleMailer.deliver_simple_message()
分享到:
相关推荐
如果邮件发送失败,ResqueMailer通常会提供一种方式来记录错误并决定是否重新尝试发送。这有助于防止邮件丢失或无限重试导致的问题。 总结来说,"使用ResqueMailer和设备发送电子邮件的简单猴子补.zip"的资源可能是...
为了解决这些问题,Ruby社区开发了一款名为Roadie的库,其目标就是减轻发送HTML邮件时的痛苦,主要通过内联CSS样式表和重写邮件中的相对URL来确保邮件在各种客户端中显示正常。 首先,我们来看内联样式表的问题。在...
在Ruby on Rails框架中,ActionMail是用于发送电子邮件的一个核心组件。它允许开发者方便地创建、格式化并发送电子邮件,而无需直接与SMTP服务器交互。本篇将详细讲解如何使用ActionMail来实现邮件功能。 首先,...
email-spec, 在使用ActionMailer或者Pony的ruby 应用中,收集 testing/minitest匹配器的集合和用于测试电子邮件的Cucumber 步骤 电子邮件规范用于 RSpec 。MiniTest 和 Cucumber 步骤的匹配器集合,使测试邮件顺利...
在Ruby on Rails框架中,我们经常使用ActionMailer模块来处理邮件发送。LetterOpener可以很好地与ActionMailer集成,作为其强大的调试工具。 在压缩包子文件的文件名称列表中,“letter_opener-master”可能表示这...
mail_safe 在开发使用ActionMailer的应用程序时,邮件保险箱提供了一个安全网。 它可以防止电子邮件逃逸。 一旦安装并配置了该gem,就可以确保您的应用不会将电子邮件发送到外部电子邮件地址。 取而代之的是,通常会...
actionmailer-2.3.5.gem
此外,还可以利用`MvcMailer`库,这是一个专门为ASP.NET MVC设计的邮件发送工具,它通过ActionMailer.NET库为每个邮件创建一个MVC控制器,使邮件定制更加直观。 从提供的压缩包文件"MvcMailer-master"来看,这可能...
capybara-email, 使用Capybara测试你的ActionMailer和Mailer消息 CapybaraEmail 轻松测试 ActionMailer 和邮件在你的集成测试中安装将此行添加到你的应用程序的Gemfile中:gem 'capybara-email'然后执行: $ bund
Markerb正是为了解决这个问题而出现的一个库,它允许你通过Markdown编写模板,然后自动生成multipart电子邮件,即同时包含文本和HTML版本的邮件。 Markerb的核心功能是将Markdown语法转换成multipart电子邮件,这种...
在实际开发中,为了确保邮件的安全性和可靠性,通常会结合使用验证机制(防止垃圾邮件)、错误处理(邮件发送失败时的重试或通知)、以及日志记录(跟踪邮件发送情况)。此外,对于大量邮件发送,可能还需要考虑使用...
ResqueMailer 一个gem插件,允许ActionMailer准备的消息异步传递。 假设您正在使用进行后台作业。 请注意,Resque :: Mailer的最新(2.0+)版本仅适用于Rails 3.x或更高版本。 对于与Rails 2兼容的版本,在Gemfile中...
一个ActionMailer适配器,可使用SendGrid的HTTPS Web API(而不是SMTP)发送电子邮件。 与Rails 5和Sendgrid API v3兼容。 安装 将此行添加到您的应用程序的Gemfile中: gem 'sendgrid-actionmailer' 用法 为您的...
actionmailer-2.3.11 安装redmine必须的gem插件
把它想象成 ActionMailer,但用于定时电子邮件序列。 它还可以执行其他操作,例如发送短信。 入门 开始使用 Heya 很容易: 安装 Heya gem 将此行添加到应用程序的 Gemfile 中: gem "heya" , github : "honey...
它作为一个轻量级的SMTP服务器运行,能够捕获所有通过它发送的邮件,并提供了一个友好的Web界面来查看这些邮件的详细内容。在开发过程中,MailCatcher可以替代实际的邮件服务,避免在测试阶段发送真实的电子邮件。 ...
Rails集成了Action Mailer库,使得处理邮件发送变得简单且灵活。这篇博文将深入探讨Rails中的邮件支持。 首先,让我们了解一下Action Mailer。它是Rails内置的一个组件,专门用于发送电子邮件。它的工作原理是通过...
它提供了一个delivery_method基于SparkPost API,使越来越设置,并通过SparkPost在Rails应用程序相当简单发送电子邮件。 入门 将宝石添加到您的Gemfile gem 'sparkpost_rails' 然后运行bundle命令进行安装。 ...
滴头 使用基于规则的滴灌广告系列系统来干燥您的邮件程序代码,该系统可与Rails和ActionMailer一起使用。好处: 从控制器中删除邮件状态逻辑依靠活动记录范围以DRY方式制作复杂的DRIP广告系列为什么: 我需要一个...
**Ruby-Mail:深入理解Ruby邮件库** Ruby-Mail是一个强大的Ruby库,专为处理电子邮件而设计。这个库使得在Ruby应用程序...在实际项目中,结合其他Ruby库(如ActionMailer用于Rails应用),可以实现更强大的邮件功能。