Commit 1b9396cedaec681a1c85c144b2b6ecd9ed689fc3

Authored by daming
1 parent 9e7f92ad
Exists in master

update: 修改附件及cc问题

lib/sendcloud/deliverer.rb
1 module Sendcloud 1 module Sendcloud
2 class Deliverer 2 class Deliverer
3 -  
4 attr_accessor :settings 3 attr_accessor :settings
5 4
6 def initialize(settings) 5 def initialize(settings)
@@ -22,13 +21,11 @@ module Sendcloud @@ -22,13 +21,11 @@ module Sendcloud
22 def deliver!(rails_message) 21 def deliver!(rails_message)
23 options = build_sendcloud_message_for(rails_message) 22 options = build_sendcloud_message_for(rails_message)
24 response = sendcloud_client.send_message options 23 response = sendcloud_client.send_message options
25 - # Rails.logger.info("from:#{options[:from]} to:#{options[:to]} res:#{response}")  
26 - rails_message.sendcloud_response = response 24 + Rails.logger.info("from:#{options[:from]} to:#{options[:to]} res:#{response}")
27 if response.code == 200 25 if response.code == 200
28 sendcloud_message_id = JSON.parse(response.to_str)["id"] 26 sendcloud_message_id = JSON.parse(response.to_str)["id"]
29 rails_message.message_id = sendcloud_message_id 27 rails_message.message_id = sendcloud_message_id
30 end 28 end
31 -  
32 response 29 response
33 end 30 end
34 31
@@ -51,16 +48,30 @@ module Sendcloud @@ -51,16 +48,30 @@ module Sendcloud
51 subject: rails_message.subject, 48 subject: rails_message.subject,
52 html: extract_html(rails_message), 49 html: extract_html(rails_message),
53 plain: extract_text(rails_message), 50 plain: extract_text(rails_message),
54 - fromName: rails_message['from-name'] 51 + fromName: rails_message["from-name"],
55 } 52 }
56 53
57 [:cc, :bcc].each do |key| 54 [:cc, :bcc].each do |key|
58 - sendcloud_message[key] = rails_message[key].formatted if rails_message[key] 55 + sendcloud_message[key] = rails_message[key].formatted.join(";") if rails_message[key]
  56 + end
  57 +
  58 + if rails_message.attachments.present?
  59 + sendcloud_message[:attachments] = transform_attachments(rails_message)
59 end 60 end
60 61
61 return sendcloud_message 62 return sendcloud_message
62 end 63 end
63 64
  65 + def transform_attachments(rails_message)
  66 + attachment = rails_message.attachments.first
  67 + filename = attachment.filename
  68 + file_path = File.join(Dir.tmpdir, filename)
  69 + File.open(file_path, "wb") do |file|
  70 + file.write(attachment.body.decoded)
  71 + end
  72 + File.open(file_path)
  73 + end
  74 +
64 def transform_sendcloud_attributes_from_rails(rails_message, sendcloud_message) 75 def transform_sendcloud_attributes_from_rails(rails_message, sendcloud_message)
65 transform_reply_to rails_message, sendcloud_message if rails_message.reply_to 76 transform_reply_to rails_message, sendcloud_message if rails_message.reply_to
66 transform_label_id rails_message, sendcloud_message 77 transform_label_id rails_message, sendcloud_message
@@ -68,12 +79,12 @@ module Sendcloud @@ -68,12 +79,12 @@ module Sendcloud
68 end 79 end
69 80
70 def transform_reply_to(rails_message, sendcloud_message) 81 def transform_reply_to(rails_message, sendcloud_message)
71 - sendcloud_message['h:Reply-To'] = rails_message[:reply_to].formatted.first 82 + sendcloud_message["h:Reply-To"] = rails_message[:reply_to].formatted.first
72 end 83 end
73 84
74 def transform_label_id(rails_message, sendcloud_message) 85 def transform_label_id(rails_message, sendcloud_message)
75 id = label_id(rails_message) 86 id = label_id(rails_message)
76 - sendcloud_message['labelId'] = id if id 87 + sendcloud_message["labelId"] = id if id
77 end 88 end
78 89
79 def extract_html(rails_message) 90 def extract_html(rails_message)
@@ -106,10 +117,9 @@ module Sendcloud @@ -106,10 +117,9 @@ module Sendcloud
106 @sendcloud_client ||= Client.new(api_url) 117 @sendcloud_client ||= Client.new(api_url)
107 end 118 end
108 119
109 - def label_id rails_message  
110 - rails_message.header.fields.find { |f| f.name == 'label-id' }.try :value 120 + def label_id(rails_message)
  121 + rails_message.header.fields.find { |f| f.name == "label-id" }.try :value
111 end 122 end
112 -  
113 end 123 end
114 end 124 end
115 125
lib/sendcloud/mail_ext.rb
@@ -4,6 +4,5 @@ module Mail @@ -4,6 +4,5 @@ module Mail
4 attr_accessor :sendcloud_options 4 attr_accessor :sendcloud_options
5 attr_accessor :sendcloud_recipient_variables 5 attr_accessor :sendcloud_recipient_variables
6 attr_accessor :sendcloud_headers 6 attr_accessor :sendcloud_headers
7 - attr_accessor :sendcloud_response  
8 end 7 end
9 end 8 end