0

私は ByteArray として pdf ファイルを持っています。サーバー上にメイン ファイルを作成せずにそれを添付する方法があるかどうか知りたいです。

Play のドキュメントで提供されているコードでは、実際のファイルのみを添付できます。

EmailAttachment attachment = new EmailAttachment();
attachment.setDescription("A pdf document");
attachment.setPath(Play.getFile("rules.pdf").getPath());

Playframework Mail モジュールを使用しています。

ありがとう!

4

2 に答える 2

2

Play 1.x は内部でApache Commons Emailライブラリを使用するため、MultiPartEmail#attach(DataSource ds, String name, String description)メソッドを使用できます。

import org.apache.commons.mail.*;

// create the mail
MultiPartEmail email = new MultiPartEmail();
email.setHostName("mail.myserver.com");
email.addTo("jdoe@somewhere.org", "John Doe");
email.setFrom("me@apache.org", "Me");
email.setSubject("The picture");
email.setMsg("Here is the picture you wanted");

// get your inputstream from your db
InputStream is = new BufferedInputStream(MyUtils.getBlob());  
DataSource source = new ByteArrayDataSource(is, "application/pdf");  

// add the attachment
email.attach(source, "somefile.pdf", "Description of some file");

// send the email
email.send();
于 2012-08-16T12:34:19.053 に答える
1

今後の Play バージョン 1.3 では、クラスattachDataSource()内から呼び出すことができるメソッドが導入されます。Mailerこれにより、最初にメールをディスクに保存したり、Apache Commons メールを使用したりすることなく、簡単に ByteArray をメールの添付ファイルとして添付できます。その後、「標準」のプレイ方法を使用できます。

Play バグトラッカーの対応する機能リクエストは次のとおりです: http://play.lighthouseapp.com/projects/57987/tickets/1500-adding-maillerattachdatasource-functionality

于 2013-09-17T11:30:09.973 に答える