70 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
class MailCron
 | 
						|
  
 | 
						|
  include Mongoid::Document
 | 
						|
  include Mongoid::Timestamps
 | 
						|
  
 | 
						|
 | 
						|
  field :mail_from_app
 | 
						|
  field :mail_from 
 | 
						|
  field :mail_to  
 | 
						|
  field :mail_reply_to  
 | 
						|
  field :mail_subject
 | 
						|
  field :mail_content, :type => Hash
 | 
						|
  field :mail_sentdate , :type => DateTime
 | 
						|
 | 
						|
  field :create_user_id
 | 
						|
  field :update_user_id
 | 
						|
  
 | 
						|
  has_many :mail_cron_files, :autosave => true, :dependent => :destroy 
 | 
						|
 | 
						|
  accepts_nested_attributes_for :mail_cron_files, :allow_destroy => true 
 | 
						|
 | 
						|
  after_save :save_mail_cron_files
 | 
						|
 | 
						|
 | 
						|
  def save_mail_cron_files
 | 
						|
    self.mail_cron_files.each do |t|
 | 
						|
      if t.should_destroy
 | 
						|
        t.destroy
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def self.send_mail_now(mail_cron_id)
 | 
						|
 | 
						|
    mail_data = MailCron.find(mail_cron_id)
 | 
						|
 | 
						|
    if !mail_data.blank?
 | 
						|
 | 
						|
      @mail_j = 0
 | 
						|
      @read_mails = Array.new 
 | 
						|
 | 
						|
      @mails = mail_data.mail_to.split(",")
 | 
						|
 | 
						|
      @mails.each do |send_mail|
 | 
						|
 | 
						|
        @read_mails << send_mail
 | 
						|
 | 
						|
        @mail_j += 1 
 | 
						|
 | 
						|
        if  0 == @mail_j % 30 
 | 
						|
          MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
 | 
						|
          @read_mails = Array.new
 | 
						|
 | 
						|
          sleep 10
 | 
						|
        end
 | 
						|
 | 
						|
      end
 | 
						|
 | 
						|
      if !@read_mails.join(',').blank?
 | 
						|
        MailCronMailer.cron_mail( mail_data.id, @read_mails.join(',') ).deliver
 | 
						|
        @read_mails = Array.new
 | 
						|
 | 
						|
        sleep 10
 | 
						|
      end  
 | 
						|
 | 
						|
    end  
 | 
						|
    
 | 
						|
  end
 | 
						|
 | 
						|
end |