91 lines
2.9 KiB
Ruby
91 lines
2.9 KiB
Ruby
# encoding: utf-8
|
|
|
|
class MailCronMailer < ActionMailer::Base
|
|
default :from => "orbit_test@rulingcom.com"
|
|
|
|
def get_settings
|
|
|
|
@site = Site.first
|
|
|
|
@smtp_settings = {
|
|
:address => @site['site_settings']['address'],
|
|
:port => @site['site_settings']['port'],
|
|
:domain => @site['site_settings']['domain'],
|
|
:authentication => @site['site_settings']['authentication'],
|
|
:enable_starttls_auto => @site['site_settings']['enable_starttls_auto']
|
|
}
|
|
|
|
if !@site['site_settings']['user_name'].blank?
|
|
@smtp_settings[:user_name] = @site['site_settings']['user_name']
|
|
end
|
|
|
|
if !@site['site_settings']['password'].blank?
|
|
@smtp_settings[:password] = @site['site_settings']['password']
|
|
end
|
|
|
|
|
|
ActionMailer::Base.smtp_settings = @smtp_settings
|
|
|
|
end
|
|
|
|
|
|
def cron_mail( data_id, group_mail )
|
|
|
|
get_settings
|
|
|
|
@data = MailCron.find(data_id)
|
|
|
|
if @data
|
|
|
|
I18n.locale = @data.mail_content["lang"] if !@data.mail_content["lang"].blank?
|
|
|
|
@mail_from = !@data.mail_from.blank? ? @data.mail_from : @site['site_settings']['service_email']
|
|
|
|
@mail_reply_to = !@data.mail_reply_to.blank? ? @data.mail_reply_to : @site['site_settings']['reply_email']
|
|
|
|
@user = User.find(@data.create_user_id)
|
|
|
|
if !@data.mail_cron_files.blank?
|
|
@data.mail_cron_files.each_with_index do |mail_cron_file, i|
|
|
file_type = File.extname(mail_cron_file.file.to_s)
|
|
file_content = Mongo::GridFileSystem.new(Mongoid.database).open(mail_cron_file.file.url.gsub("/gridfs/", "").force_encoding("UTF-8"), 'r')
|
|
attachments["#{mail_cron_file.title}#{file_type}"] = file_content.read
|
|
end
|
|
end
|
|
|
|
if !@data.mail_content["text"].blank?
|
|
mail( :from => "\"#{@site.title}\" <#{@mail_from}>", :reply_to => @mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
|
|
format.html { render :text => @data.mail_content["text"] }
|
|
end
|
|
elsif !@data.mail_content["template"].blank?
|
|
mail( :from => "\"#{@site.title}\" <#{@mail_from}>", :reply_to => @mail_reply_to, :bcc => group_mail, :subject => @data.mail_subject ) do |format|
|
|
format.html { render :template => @data.mail_content["template"], :collection => @data.mail_content }
|
|
end
|
|
end
|
|
|
|
@mail_cron_log = {
|
|
:mail_subject => @data.mail_subject,
|
|
:mail_to => group_mail,
|
|
:mail_user => "#{@user.name} <#{@user.email}>",
|
|
:mailer_count => group_mail.split(",").size,
|
|
:mail_from_app => @data.mail_from_app
|
|
}
|
|
|
|
@mail_cron_log = MailCronLog.new(@mail_cron_log)
|
|
|
|
@mail_cron_log.save
|
|
|
|
@mail_to_count = @data.mail_to.split(',') - group_mail.split(',')
|
|
|
|
if @mail_to_count.count == 0
|
|
@data.destroy
|
|
else
|
|
@data.mail_to = @mail_to_count.join(',')
|
|
@data.save
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end |