Commit 9b098e77bd65bc03c9de4186479220d4ce4474c9

Authored by daming
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  
... ...