Commit 1b9396cedaec681a1c85c144b2b6ecd9ed689fc3
1 parent
9e7f92ad
Exists in
master
update: 修改附件及cc问题
Showing
2 changed files
with
21 additions
and
12 deletions
Show diff stats
lib/sendcloud/deliverer.rb
1 | 1 | module Sendcloud |
2 | 2 | class Deliverer |
3 | - | |
4 | 3 | attr_accessor :settings |
5 | 4 | |
6 | 5 | def initialize(settings) |
... | ... | @@ -22,13 +21,11 @@ module Sendcloud |
22 | 21 | def deliver!(rails_message) |
23 | 22 | options = build_sendcloud_message_for(rails_message) |
24 | 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 | 25 | if response.code == 200 |
28 | 26 | sendcloud_message_id = JSON.parse(response.to_str)["id"] |
29 | 27 | rails_message.message_id = sendcloud_message_id |
30 | 28 | end |
31 | - | |
32 | 29 | response |
33 | 30 | end |
34 | 31 | |
... | ... | @@ -51,16 +48,30 @@ module Sendcloud |
51 | 48 | subject: rails_message.subject, |
52 | 49 | html: extract_html(rails_message), |
53 | 50 | plain: extract_text(rails_message), |
54 | - fromName: rails_message['from-name'] | |
51 | + fromName: rails_message["from-name"], | |
55 | 52 | } |
56 | 53 | |
57 | 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 | 60 | end |
60 | 61 | |
61 | 62 | return sendcloud_message |
62 | 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 | 75 | def transform_sendcloud_attributes_from_rails(rails_message, sendcloud_message) |
65 | 76 | transform_reply_to rails_message, sendcloud_message if rails_message.reply_to |
66 | 77 | transform_label_id rails_message, sendcloud_message |
... | ... | @@ -68,12 +79,12 @@ module Sendcloud |
68 | 79 | end |
69 | 80 | |
70 | 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 | 83 | end |
73 | 84 | |
74 | 85 | def transform_label_id(rails_message, sendcloud_message) |
75 | 86 | id = label_id(rails_message) |
76 | - sendcloud_message['labelId'] = id if id | |
87 | + sendcloud_message["labelId"] = id if id | |
77 | 88 | end |
78 | 89 | |
79 | 90 | def extract_html(rails_message) |
... | ... | @@ -106,10 +117,9 @@ module Sendcloud |
106 | 117 | @sendcloud_client ||= Client.new(api_url) |
107 | 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 | 122 | end |
112 | - | |
113 | 123 | end |
114 | 124 | end |
115 | 125 | ... | ... |