Groovyを使用するシステムで顧客に電子メールを送信するプロセスを書いています(apache.commons.mail.*のlibsが既にインストールされています。GroovyとApacheのコモンズを使用してBase64文字列からイメージの添付ファイルを送信
問題は、画像がbase64でエンコードされた文字列として渡されてしまうことです。私はそれらを画像として保存し、URL(here are some examples of sending an email with attachments)を介して添付することを検討しましたが、再エンコードするためのデコードの浪費のようです。画像を直接添付する方法はありますか?
私はsimilar questionsとa few他SO postsを見つけたが、それらのいずれかは、私の状況のために不十分な答えを与えるか、私はへのアクセスを持っていない他のバージョンのJava /ライブラリに依存するように見えます。
編集:私は今それをしていますのはここ
は(this postにJerryPさんのコメントのおかげで)です:
だから、def my_img = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQAB...";
byte[] img_bytes = b64_data.src.drop(b64_data.src.indexOf(',')+1).decodeBase64(); // This extracts the encoded part
def type = b64_data.src.substring(b64_data.src.indexOf(':') + 1, b64_data.src.indexOf(';')); // This extracts the data type from the long base64 string (i.e. 'data:image/jpeg;base64,/9j/4AAQSkZJRgABA...')
enc_attachments = ByteArrayDataSource(img_bytes, type);
、私は今、私のイメージのByteArrayDataSource
を持っていますが、the embed
calls in apache commonsを取ることはありませんparamとしてのByteArrayDataSource。