Commit 1b9396cedaec681a1c85c144b2b6ecd9ed689fc3

Authored by daming
1 parent 9e7f92ad
Exists in master

update: 修改附件及cc问题

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  
... ...
lib/sendcloud/mail_ext.rb
... ... @@ -4,6 +4,5 @@ module Mail
4 4 attr_accessor :sendcloud_options
5 5 attr_accessor :sendcloud_recipient_variables
6 6 attr_accessor :sendcloud_headers
7   - attr_accessor :sendcloud_response
8 7 end
9 8 end
... ...