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 | 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 |