1

Rails AWS EB 응용 프로그램 (작업자 계층)에서 CSV 첨부 파일이 포함 된 전자 메일을 보내려고합니다.작업 메일러 및 AWS 대기열로 CSV 첨부 파일 보내기

이 예에서는 데이터가 첨부 된 상태로 전자 메일을 올바르게 보내고 여기에 CSV 문자열을 하드 코드했습니다. 나는 API에서 CSV 문자열을 보낼 때

def send_mail 
    content = "Example,CSV,Content\n,..." 
    attachments['test.csv'] = { mine_type: 'text/csv', content: content} 
    mail( :from => '[email protected]>', 
      :to => '[email protected]', 
      :subject => 'Email with attachment', 
      :body => "testing sending email attachment" 
     ) 
end 

그러나 나는 인코딩에 문제가있는 것 같다. 내가 보내려는 물건은 이것입니다.

email = { 
    from: "[email protected]", 
    to: "[email protected]", 
    subject: "Email with attachment", 
    content_type: 'text/html', 
    attachments: { 
     filename: 'test.csv', 
     content: File.read("#{Rails.root}/test.csv") 
    } 
} 

그리고 그 방법;

def send_mail(params) 
    filename = params[:attachments][:filename] 
    attachments[filename] = { mine_type: 'text/csv', 
           content_type: 'text/comma-separated-values', 
           transfer_encoding: '7bit', 
           content: [:attachments][:content] 
          } 
    mail(params) 
end 

은 내가 '7 비트'내용이 base64로 암호화됩니다로 설정하지 않으면 transfer_encoding에 문제가있을 수 있습니다 생각합니다. 작업 메일러 방법 attachments.instance_values ​​을 사용하여 작동하는 전자 메일 및 해당 바이너리의 content_encoding을 확인했습니다. 그러나 실패한 예제에서는 바이너리로 설정했지만 base64로 되돌립니다. params [: attachments] [: content]를 변수로 설정하면 attachments.instance_values를 기록 할 때 값은 'binary'이지만 메일이 수신되면 메시지가 표시됩니다.

----==_mimepart_57ac6ae25a220_68972ad836f669fc984a7 
    Content-Type: text/comma-separated-values; charset=UTF-8 
    Content-Transfer-Encoding: base64 
    Content-Disposition: attachment; 
    filename=test.csv 
    mine-type: text/csv 
    Content-ID: <57ac6ae259b90_68972ad836f669fc983b0> 

감사의 말 :

답변

1

제대로 구문 분석하려면 mine-type이 아니어야합니다.