1

Rails AWS EBアプリケーション(ワーカー層)からCSV添付ファイルを含むメールを送信しようとしています。アクションメーラーとAWS Sqsキューを使用したCSV添付の送信

この例では、データが添付された状態で電子メールが正しく送信されます。ここには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 

ただし、APIからCSV文字列を送信すると、エンコードに問題があるようです。私が送るものはこれです。

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 

私はコンテンツがbase64で暗号化されている「7ビット」にそれを設定しない場合は、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

正確に解析するには、mime-typeでなくmime-typeでなければなりません。

関連する問題