用ruby发送定时邮件

需求很简单,每天给几个邮箱发送前一天的销售数据。

 

你想用whenever?sidetiq?还是别的什么gem?

 

我选择独立一个ruby脚本,crontab自动执行。

 

baby.rb 1.56 KB
require 'active_record'
require "net/smtp"
require 'mysql2'
require 'yaml'

config = YAML::load(File.open(File.dirname(__FILE__) + "/database.yml"))
ActiveRecord::Base.establish_connection(config)

def query_data
  ## debug
  # start_time = '2014-12-23 00:00:00'
  # end_time = '2014-12-23 23:59:59'
  start_time = (Date.today - 1).to_s + ' 00:00:00'
  end_time = (Date.today - 1).to_s + ' 23:59:59'
  sql = 'SELECT sum(h.order_amount) FROM shop_order as h' +' '+\
    'where (h.status<>-10 and h.status<>0)' +' '+\
    'and (h.pay_time>= "' + start_time + '" and h.pay_time<= "' + end_time + '")' +' '+\
    'and h.order_type="normal"'
  p sql
  ActiveRecord::Base.connection.select_value sql
end

def chinese_date
  "#{(Time.now - 1.day).year}#{(Time.now - 1.day).month}#{(Time.now - 1.day).day}日"
end

def send_mail(data_user)
  from_address = "rendy@shop.nipponpaint.com.cn"
  to_address = ["s—————@nipponpaint.com.cn", "w——@d——.com", "l——@d——.com"]

  mail = "Subject: 【立邦商城】" + chinese_date + "销量\r\n" +\
    "To: s————@nipponpaint.com.cn; w——@d——.com; l——@d——.com\r\n" +\
    "Dear all,\r\n" +\
    "\r\n" +\
    "立邦官方商城" + chinese_date + "的普通会员销量为:" + data_user.to_s + "元"
  Net::SMTP.start('localhost') do |smtp|
    smtp.send_mail(mail, from_address, to_address)
  end
end


puts Time.new
puts '----Job Start----'

  amount_user = query_data
  amount_user = '0' unless amount_user
  p "=>" + amount_user.to_s
  send_mail(amount_user)

puts '----Job Finished----'
puts Time.new
exit;

 

crontab -e

加上一条

45 18 * * * /usr/local/bin/ruby /var/www/mail/ontime/baby.rb

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值