2017-01-05 2 views
0

루비에서 구글-API 클라이언트 보석과 이메일에 파일 첨부 , 그러나 그것을하는 방법에 대한 예제를 찾을 수 없습니다. 보석 저장소에있는 example included은 그 사건을 설명하지 않습니다. 나는 리버스 엔지니어링을 시작했으나 거의 하루 종일 시도한 후에 미친 짓을 시작했다.나는 <code>google-api-client</code> 보석에 구글 API의 감사를 통해 이메일을 보낼 관리했습니다

upload = Google::Apis::Core::UploadIO.new('/path/to/image.png', 'image/png', 'image.png') 
file_part = Google::Apis::Core::FilePart.new(nil, upload) 
message_object = Google::Apis::GmailV1::Message.new(payload: file_part, raw: 'this is a test body') 
service.send_user_message('me', message_object, content_type: 'message/rfc822') 

이메일이 반송되었습니다

내 마지막 시도는 다음을이었다.

파일을 첨부하는 적절한 방법은 무엇입니까?

답변

1

예상보다 쉽습니다. 다음은 예입니다 : 내가 더 응답을 기다릴 것

class Client 
    def initialize(service) 
    @service = service 
    end 

    def send_message(from:, to:, subject:, body:) 
    message = RMail::Message.new 
    message.header.set('From', from) 
    message.header.set('To', to) 
    message.header.set('Subject', subject) 
    message.body = [text_part(body), file_part] 

    @service.send_user_message(
     'me', 
     upload_source: StringIO.new(message.to_s), 
     content_type: 'message/rfc822' 
    ) 
    end 

    private 

    def text_part(body) 
    part = RMail::Message.new 
    part.body = body 

    part 
    end 

    def file_part 
    part = RMail::Message.new 
    part.header.set('Content-Disposition', 'attachment', 'filename' => File.basename('/path/to/image.png')) 
    part.body = File.read('/path/to/image.png') 

    part 
    end 
end 

, 어쩌면 내가 고려하고 있지 않다 무언가가있다.