我们公司的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"的资源可能是...
在IT行业中,"Mailer"通常指的是一个用于发送电子邮件的软件组件或库,它允许程序员通过编程方式发送邮件。在这个场景中,"邮递员"是一个形象化的比喻,它执行着将电子“信件”(邮件)传递到指定“地址”(收件人...
- **发送邮件**:指导如何使用ActionMailer发送邮件。 - **接收电子邮件**:说明如何配置应用接收电子邮件。 - **ActionMailer回调**:介绍ActionMailer中的回调机制。 - **使用ActionMailer辅助方法**:展示如何...
cmd脚本-bat批处理-删除右键“新建”菜单项目.zip
cmd脚本-bat批处理-YLMF系统服务优化.zip
cmd-bat-批处理-脚本-替换系统主题.zip
内容概要:本文详细介绍了 MySQL 索引的概念、类型及其创建、修改和删除方法。索引作为一种数据结构,能够显著提升数据库查询速度,类似于书籍的索引帮助快速定位信息。文章解释了单列索引和组合索引的区别,并强调了索引的创建应基于 SQL 查询的条件部分。此外,文中还探讨了普通索引和唯一索引的特点及创建方式,包括使用 `CREATE INDEX`、`ALTER TABLE` 和 `CREATE TABLE` 语句的具体用法。最后,文章提醒用户注意索引的维护成本,如额外的存储空间和对插入、更新和删除操作的影响,以及如何通过 `SHOW INDEX` 查看索引信息。 适用人群:适用于数据库管理员、软件开发人员以及对 MySQL 数据库优化感兴趣的用户。 使用场景及目标:①需要优化数据库查询性能,特别是处理大型数据表时;②理解不同类型的索引(如普通索引、唯一索引)及其应用场景;③掌握索引的创建、修改和删除方法,确保数据库的高效运行。 其他说明:创建索引虽能提高查询效率,但也需权衡其带来的额外开销。建议在实际应用中根据具体需求合理规划索引,避免过度使用导致性能下降。同时,定期检查和优化现有索引,确保其始终符合业务需求。
Android校园二手交易App项目源码(高分期末大作业),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)Android校园二手交易App项目源码(高分期末大作业)And
cmd脚本-bat批处理-RUN.zip
cmd-bat-批处理-脚本-倒记时(全屏).zip
cmd-bat-批处理-脚本-老外写的系统文件替换.zip
cmd脚本-bat批处理-去最大最小值后求剩余数组平均值.zip
cmd-bat-批处理-脚本-弹出对话框.zip
内容概要:本文详细介绍了如何在MySQL中完整复制数据表的方法。首先,通过SHOW CREATE TABLE命令获取原表的创建语句,包括表结构、索引等信息;接着,修改语句中的表名并执行,以创建新的空表;最后,利用INSERT INTO...SELECT语句将源表的数据插入到新表中,从而实现表结构与数据的全面复制。此外,还介绍了使用mysqldump命令进行表级备份和恢复的操作,即先用mysqldump导出表结构和数据到SQL文件,再通过mysql命令将此文件导入到目标数据库中,适用于跨库或跨服务器的数据迁移。; 适合人群:数据库管理员、开发人员以及需要对MySQL数据库进行表复制操作的技术人员。; 使用场景及目标:①当需要在同一数据库内创建具有相同结构和数据的新表时;②在不同数据库之间迁移单个表的数据和结构;③作为数据备份的一种手段,确保重要表数据的安全性。; 其他说明:文中提供的方法不仅限于简单的表复制,在实际应用中还可以根据需求调整表结构或筛选特定数据行进行复制。同时,使用mysqldump工具时要注意用户名、密码及数据库名称等参数的正确性。
cmd-bat-批处理-脚本-OptimizeXp.zip
内容概要:本文档主要介绍了MySQL中处理重复数据的方法。首先,讲解了如何通过设置主键(PRIMARY KEY)或唯一索引(UNIQUE)来防止数据表中出现重复数据,包括创建具有唯一约束条件的表结构示例。接着,阐述了两种特殊的插入语句——`INSERT IGNORE INTO`和`REPLACE INTO`的区别及其应用场景,前者用于忽略重复数据插入,后者则会替换已有的重复记录。然后,详细描述了如何使用SQL语句统计表内的重复记录,以及如何利用`DISTINCT`关键字或`GROUP BY`子句来过滤并读取不重复的数据。最后,提供了几种删除数据表中重复数据的方法,如创建临时表再重建原表、直接修改表结构添加唯一性约束等。 适合人群:有一定SQL基础,对MySQL数据库管理和优化感兴趣的开发人员、数据库管理员。 使用场景及目标:①掌握通过设置主键或唯一索引来避免数据重复;②学会使用特定的SQL语句处理重复数据,包括统计、过滤和删除;③理解不同插入语句在面对重复数据时的行为差异。 阅读建议:在学习过程中,建议结合实际的MySQL环境进行练习,尤其是尝试文中提供的SQL语句,以便更好地理解和掌握处理重复数据的各种技巧。
cmd-bat-批处理-脚本-关闭局域网共享.zip
cmd-bat-批处理-脚本-比较两个文件夹下文件名的异同.zip
1743390592614.osm
振动压路机振动轮.rar