0

私はこのクラスを使用してメールを送信していますが、添付ファイルを追加したいので、追加する方法を教えてください。

public static void sendMail(String subject, String body, String toEmail, String ccEmail, String fromMail)
                throws IOException {
            Random generator = new Random();
            int r = Math.abs(generator.nextInt());

            body = body.replaceAll("(\\r|\\n)", "");
            body = body.replaceAll("\"", "\\\\\"");
            body = body.replaceAll("&", "\\\\&");
            body = body.replaceAll("©", "\\\\©");
            //body = body.replaceAll("> <", ">\\\n<");

            if(CommonUtils.emptyString(fromMail))
                fromMail = "No Reply <iotasol@pcc.com>";
            else
                fromMail = "No Reply <"+fromMail+">";

            ProcessBuilder processBuilder = new ProcessBuilder(
                    ApplicationProperties.MAIL_SENDER_SH_PATH, CommonUtils.getEmptyStringForNull(subject), CommonUtils.getEmptyStringForNull(body),
                    toEmail, ccEmail, String.valueOf(r), fromMail);
            processBuilder.start();
        }
4

3 に答える 3

0

画像を送信する必要がある場合のアイデアとして、base64 でインライン化します。

添付ファイルは、使用するライブラリ、使用するメール サーバーなどによって異なります。

于 2013-03-01T07:38:05.657 に答える
0
       MimeBodyPart messageBodyPart = new MimeBodyPart();
       File file = new File("somefile.txt");
       if (file.exists()) {
           DataSource source = new FileDataSource("somefile.txt");
           messageBodyPart.setDataHandler(new DataHandler(source));
           messageBodyPart.setFileName(file.getName());
           multipart.addBodyPart(messageBodyPart);
       }
于 2013-03-01T07:42:31.760 に答える
0

コード例から、電子メールの送信に外部メールプログラムを使用していることがわかります。ProcessBuilderを作成し、電子メールを送信するための OS ツールを呼び出します。

私はこのソリューションを使用しません。まず、OS に依存します (windows には mail コマンドがありません)。第二に、これは効率的ではありません。このための外部プロセスを作成するためです(多くの電子メールを送信することを想像してください)。

代わりに、Java で既存のメールソリューションを使用してみてください (mail.jar と activation.jar が必要です)。これにより、外部ツールに依存することなく、アプリケーションから直接メールを送信できます。

メールJava ライブラリを使用すると、必要なことはすべて実行できますが、Jodd Emailも参照できます。これは小さいながらも便利な Java メール ライブラリのラッパーで、電子メールや添付ファイルの送信に役立ちます。「流暢な API を使用した電子メール」セクションでわかるように、次のことができます。

Email email = Email.create()
    .from("from@foo.org")
    .to("to@bar.com")
    .subject("test")
    .addText("Hello!")
    .addHtml(
        "<html><body><h1>Hey!</h1>" +
        "<img src='cid:c.png'><h2>Hay!</h2></body></html>")
    .embed(attachment().bytes(new File("d:\\c.png")))
    .attach(attachment().file("d:\\b.jpg"));

この例では、ファイルを添付する方法が 2 つあります。HTML コンテンツに表示されるようにファイルを埋め込む方法と、一般的な添付方法です。もちろん、流暢なインターフェイスを使用する必要はありません。これは、このライブラリの 1 つのオプションにすぎません。

于 2013-03-01T08:13:43.067 に答える