`
FZtree
  • 浏览: 110696 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用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

 

 

分享到:
评论

相关推荐

    Ruby-Rails的异常通知插件

    该插件支持多种通知方式,包括电子邮件、短信、Webhook等,可以根据团队的需求进行灵活配置。在初始化插件时,你可以设置错误通知的接收者、发送方式以及错误分类。例如,你可能希望将致命错误发送给整个团队,而将...

    Ruby-resquescheduler建立在resque之上的一个轻量级作业调度系统

    在实际应用中,resque-scheduler可以用于各种场景,如定期备份数据库、发送邮件通知、执行数据分析等。它简化了定时任务的管理,使得开发者可以更专注于任务的逻辑,而无需关心何时触发任务的问题。 通过压缩包中的...

    Ruby-minicron一个系统来管理和监控cron作业

    通过使用Ruby编写作业脚本,开发者可以充分利用Ruby的语法和库,创建复杂的定时任务。同时,minicron允许用户以JSON或YAML格式定义作业配置,这样可以更直观地管理和维护作业列表。 在部署和配置方面,Ruby-...

    heya:Heya :waving_hand: 是 Rails 的竞选邮件。 把它想象成 ActionMailer,但用于定时电子邮件序列。 它还可以执行其他操作,例如发送短信

    把它想象成 ActionMailer,但用于定时电子邮件序列。 它还可以执行其他操作,例如发送短信。 入门 开始使用 Heya 很容易: 安装 Heya gem 将此行添加到应用程序的 Gemfile 中: gem "heya" , github : "honey...

    WishMailer

    这是一个Ruby的GEM,通过它配合crontab可以定时的给你的朋友们发送包含: 天气预报 近期电影 历史的今天等内容的邮件, 而且该GEM的扩展性非常好,只要你写了一个插件放到源码的feature目录,并且这个类实现了fdata方法,...

    Email-using-AWS-SES

    9. **自动化的邮件服务**:如果博客中还包括了这一部分,可能会讲解如何结合Rails的作业队列(如Sidekiq或Resque)来安排定时发送邮件。 10. **最佳实践**:最后,分享一些使用AWS SES的最佳实践,例如如何批量发送...

    birthday-greeter

    4. **邮件发送**:发送生日祝福可能通过 SMTP 协议来实现,Ruby 的 `mail` gem 提供了发送邮件的功能。开发者需要配置 SMTP 服务器的详细信息,包括用户名、密码、服务器地址等,然后使用 `Mail` 对象创建并发送邮件...

    reminder-agent:间隔重复的胜利!

    "这个标题和描述暗示了一个关于定时提醒功能的软件项目,它可能是用Ruby编程语言实现的。Ruby是一种面向对象的、灵活的编程语言,常用于构建Web应用、脚本以及各种实用工具,因其简洁的语法和强大的元编程能力而受到...

    服务器自动化任务解决方案 Huginn.zip

    为了高效地管理网络资源、监控数据变化和执行定时任务,许多企业和开发者开始寻找可靠的自动化工具。其中,Huginn以其强大的功能和灵活的配置脱颖而出,成为了一个备受瞩目的解决方案。本文将深入探讨Huginn的核心...

    持续集成之CruiseControl.rb

    6. **Notifier**:通知器将构建状态通过邮件、IM等方式发送给团队成员,帮助他们及时了解构建情况。 ### 三、CruiseControl.rb的安装与配置 1. **安装**:CruiseControl.rb通常通过RubyGems进行安装,运行`gem ...

    39、ActiveMQ.pdf

    4. **延迟和定时任务**:ActiveMQ支持延时发送和定时投递,可以用来安排未来某个时间执行的任务,如定时发送邮件通知或执行定期备份。 整合Spring和SpringBoot是使用ActiveMQ的常见实践。Spring框架提供了与...

    cchecksapi:CRAN检查API

    每天我们清除30天以上的所有检查数据定时任务: 每3小时抓取一次pkg特定数据每4小时刮擦一次维护人员级别的数据每天填充一次历史路线通知事项Sidekiq用于处理/安排/重试通知电子邮件Redis用于Sidekiq存储Sendgrid...

    Laravel开发-laravel

    使用`App\Console\Kernel`中的`schedule`方法,开发者可以定义定时任务,这些任务可以按计划在服务器上运行,例如发送定期邮件、清理缓存等。 **7. 艺术家命名空间和自动加载:** Laravel遵循PSR-4标准,使用艺术家...

    rabbitmq_delayed_message_exchange-3.8.0 延迟队列插件

    5. **适用场景**:适用于那些需要在特定时间点执行的任务,如定时发送邮件、处理过期订单、执行周期性检查等。 通过这个插件,RabbitMQ能够更灵活地处理消息,提供了强大的定时和延迟功能,使开发者能够构建更加...

    beanstalkd-1.4.6

    - **邮件发送**:即时发送邮件可能会阻塞用户操作,将邮件发送任务放入队列,可以提高用户体验。 - **消息通知**:例如,用户完成某操作后,需要发送短信或邮件通知,可以将通知任务放入队列,避免直接影响主业务...

    sl4a-r3.rar

    4. **自动化任务**:用户可以通过脚本自动化日常的手机任务,例如定时开关机、自动发送邮件等。 5. **扩展性**:SL4A允许开发自定义的脚本模块,以实现特定的功能。 SL4A对于初学者和经验丰富的开发者都极具价值。...

    Go-Fireworq一个轻量级高性能语言无关的作业队列系统

    - **异步操作**:比如邮件发送、图片处理等耗时操作,避免阻塞主线程。 - **消息通知**:定时发送通知或提醒,如订阅更新、优惠券到期提醒等。 - **限流控制**:通过作业队列平滑系统负载,防止短时间内大量请求...

    my_scheduler:类似于Google的Scheduler与您的Rails和dhtmxScheduler

    这些任务可以基于时间间隔(如每小时、每日、每周等)或特定的时间点触发,从而帮助开发者实现各种后台作业,例如数据同步、报表生成、邮件发送等。 【标签】"Ruby" 指出my_scheduler是用Ruby编程语言编写的,Ruby...

    schedule_cron

    7. **Cron与Web应用集成**:在Rails或其他Web框架中,Cron任务常用于定期执行后台任务,如数据同步、发送邮件、清理缓存等。它们通常不直接与用户交互,而是作为服务层的一部分。 通过理解和有效地利用`schedule_...

    前端开源库-node-resque

    - **批量数据处理**:如用户注册后的邮件发送、图片处理等。 - **后台同步**:例如从API获取数据、数据库同步等。 - **定时任务**:如每天生成报表、清理过期数据。 - **事件驱动**:当满足特定条件时触发的任务,如...

Global site tag (gtag.js) - Google Analytics