欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

rails 发送电子邮件(ActionMailer)

程序员文章站 2022-07-15 20:07:47
...
1: 复制以下配置邮件的代码到environment.rb文件下面或者其他的环境文件中

ActionMailer::Base.default_charset = "utf-8"   #  设置发送邮件的内容的编码类型
ActionMailer::Base.default_content_type = "text/html"   # 发送邮件的默认内容类型
ActionMailer::Base.delivery_method = :smtp   # 以smtp邮件传送协议发送邮件
ActionMailer::Base.smtp_settings = {   # 邮件服务器的设置
    :address => "smtp.163.com",
    :port => 25,
    :domain => "163.com",
    :authentication => :login,
    :user_name => "zhangcaiyan0123@163.com",
    :password => "zhangcaiyan"
}

解释:
address:  SMTP邮件服务器地址
port:        SMTP邮件服务器端口
domain:              当识别自己是服务器时 mailer应该使用的域名
authentication:  邮件服务器验证方式(:plain,:login,或:cram_md中的一个。你的服务器管理员将帮助选择正确的选项。当前没使用TLS(SSL)来从Rails连接邮件服务器的方式。这个参数应该被忽略,如果你的服务器不要求确认。)
user_name:           邮件服务器的用户名称(如果:authentication被设置则要求有此)
password:           邮件服务器的用户密码(如果:authentication被设置则要求有此)
enable_starttls_auto:    打开ssl连接(true或false)



2:  ruby script/generate mailer email   创建名称为Email的mailer模型文件

3 :     在Email的mailer文件中创建发送邮件的方法:
def confirm(email)
    subject    "激活'我的生活'账户"
    recipients email
    from       'zhangcaiyan0123@163.com'
    sent_on    Time.now

    body       "欢迎加入‘我的生活’,我们致力于更加方便的生活,请点击激活账户"
  end

注意:

subject:    邮件标题
recipients :  邮件收件人地址
from:        邮件来源地址
sent_on:      邮件发送时间
body:        邮件具体内容


4:  发送邮件

email = Email.create_confirm("zhangcaiyan0123@163.com")   创建邮件实例
Email.deliver(email)     发送邮件

或者

Email.deliver_confirm("zhangcaiyan0123@163.com")  直接发送邮件


eg: gmail服务器的配置

config_file = "#{Rails.root}/public/config/smtp_gmail.yml"
config_options = YAML.load_file(config_file)

ActionMailer::Base.default_charset = "utf-8"
ActionMailer::Base.default_content_type = "text/html"
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => 587,
    :authentication => :login,
    :enable_starttls_auto => true
}.merge(config_options)