Commit 9b098e77bd65bc03c9de4186479220d4ce4474c9
1 parent
24f9f8ce
Exists in
master
Fix: 增加发送附件功能
Showing
1 changed file
with
19 additions
and
7 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) |
... | ... | @@ -49,16 +48,30 @@ module Sendcloud |
49 | 48 | subject: rails_message.subject, |
50 | 49 | html: extract_html(rails_message), |
51 | 50 | plain: extract_text(rails_message), |
52 | - fromName: rails_message['from-name'] | |
51 | + fromName: rails_message["from-name"], | |
53 | 52 | } |
54 | 53 | |
55 | 54 | [:cc, :bcc].each do |key| |
56 | 55 | sendcloud_message[key] = rails_message[key].formatted if rails_message[key] |
57 | 56 | end |
58 | 57 | |
58 | + if rails_message.attachments.present? | |
59 | + sendcloud_message[:attachments] = transform_attachments(rails_message) | |
60 | + end | |
61 | + | |
59 | 62 | return sendcloud_message |
60 | 63 | end |
61 | 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 = File.new(file_path, "w") | |
70 | + file.puts(attachment.body.decoded) | |
71 | + file.close | |
72 | + File.open(file_path) | |
73 | + end | |
74 | + | |
62 | 75 | def transform_sendcloud_attributes_from_rails(rails_message, sendcloud_message) |
63 | 76 | transform_reply_to rails_message, sendcloud_message if rails_message.reply_to |
64 | 77 | transform_label_id rails_message, sendcloud_message |
... | ... | @@ -66,12 +79,12 @@ module Sendcloud |
66 | 79 | end |
67 | 80 | |
68 | 81 | def transform_reply_to(rails_message, sendcloud_message) |
69 | - sendcloud_message['h:Reply-To'] = rails_message[:reply_to].formatted.first | |
82 | + sendcloud_message["h:Reply-To"] = rails_message[:reply_to].formatted.first | |
70 | 83 | end |
71 | 84 | |
72 | 85 | def transform_label_id(rails_message, sendcloud_message) |
73 | 86 | id = label_id(rails_message) |
74 | - sendcloud_message['labelId'] = id if id | |
87 | + sendcloud_message["labelId"] = id if id | |
75 | 88 | end |
76 | 89 | |
77 | 90 | def extract_html(rails_message) |
... | ... | @@ -104,10 +117,9 @@ module Sendcloud |
104 | 117 | @sendcloud_client ||= Client.new(api_url) |
105 | 118 | end |
106 | 119 | |
107 | - def label_id rails_message | |
108 | - 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 | |
109 | 122 | end |
110 | - | |
111 | 123 | end |
112 | 124 | end |
113 | 125 | ... | ... |