1

メールの送信や転送は問題ありません。ただし、添付ファイルを MIME マルチパートとして送信しようとすると、添付ファイルが送信されません。既存の投稿を精査し、複数の修正方法を試しました。低レベルの MailService は機能しますが、JavaMail は機能しません。両方のコード スニペットを投稿します。うまくいけば、誰かが答えてくれるでしょう。

送信者はアプリ管理者ですが、スニペットで変更されています。

何が機能するか、低レベルの API 呼び出しは次のとおりです。

        String htmlBody = "Data dump from " + host + ". See attached.";
        Properties props = new Properties();
        Session session = Session.getInstance(props, null); // not used
        MailService service = MailServiceFactory.getMailService();
        MailService.Message msg = new MailService.Message();
        msg.setSender("myUser@gmail.com");
        msg.setTo("anotherUser@gmail.com");
        msg.setSubject("Committee Participation Report");
        msg.setHtmlBody(htmlBody);
        MailService.Attachment attachment = new MailService.Attachment("data-dump.cvs",
                report.getBytes());
        msg.setAttachments(attachment);
        service.send(msg);

うまくいかないのは、JavaMail API 呼び出し:

    Properties props = new Properties();
    Session session = Session.getInstance(props, null);
    Message msg = new MimeMessage(session);
    msg.setFrom("admins");
    msg.addRecipient(Message.RecipientType.TO, "aUser@gmail.com");
    msg.setSubject("a subject");

    Multipart mp = new MimeMultipart();

    MimeBodyPart htmlPart = new MimeBodyPart();
    htmlPart.setContent(htmlBody, "text/html");     
    mp.addBodyPart(htmlPart);

    MimeBodyPart attachment = new MimeBodyPart();
    attachment.setDataHandler(new DataHandler(new ByteArrayDataSource(report.getBytes(), "text/comma-separated-values")));
    attachment.setFileName("cvsfile.csv");      
    mp.addBodyPart(attachment);

    msg.setContent(mp);
    Transport.send(msg);

添付ファイル付きまたは添付ファイルなしの電子メールに同じ API を使用するとよいので、添付ファイルを送信するために JavaMail API を取得できた人がいる場合は、その方法を知りたいと思います。

4

0 に答える 0