12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- class Observer::Ticket::Article::CommunicateEmail < ActiveRecord::Observer
- observe 'ticket::_article'
- def after_create(record)
-
- return if Setting.get('import_mode')
-
- sender = Ticket::Article::Sender.lookup( :id => record.ticket_article_sender_id )
- return 1 if sender == nil
- return 1 if sender['name'] == 'Customer'
-
- type = Ticket::Article::Type.lookup( :id => record.ticket_article_type_id )
- return if type['name'] != 'email'
-
- ticket = Ticket.lookup( :id => record.ticket_id )
- subject = ticket.subject_build( record.subject )
-
- a = Channel::IMAP.new
- message = a.send(
- {
- :message_id => record.message_id,
- :in_reply_to => record.in_reply_to,
- :from => record.from,
- :to => record.to,
- :cc => record.cc,
- :subject => subject,
- :body => record.body,
- :attachments => record.attachments
- }
- )
-
- Store.add(
- :object => 'Ticket::Article::Mail',
- :o_id => record.id,
- :data => message.to_s,
- :filename => "ticket-#{ticket.number}-#{record.id}.eml",
- :preferences => {},
- :created_by_id => record.created_by_id,
- )
-
- recipient_list = ''
- [:to, :cc].each { |key|
- if record[key] && record[key] != ''
- if recipient_list != ''
- recipient_list += ','
- end
- recipient_list += record[key]
- end
- }
- if recipient_list != ''
- History.history_create(
- :o_id => record.id,
- :history_type => 'email',
- :history_object => 'Ticket::Article',
- :related_o_id => ticket.id,
- :related_history_object => 'Ticket',
- :value_from => record.subject,
- :value_to => recipient_list,
- :created_by_id => record.created_by_id,
- )
- end
- end
- end
|