2

startmime multipart / relatedメッセージのcontent-typeに属性を設定するにはどうすればよいですか?より正確には、 https: //www.rfc-editor.org/rfc/rfc6362startから取得した以下の例でルート添付ファイルの属性を設定する方法を知りたいです。

--OUTER-BOUNDARY
Content-type: multipart/related; boundary="INNER-BOUNDARY";
   start="<root.attachment>"; type="application/xml"

--INNER-BOUNDARY
Content-type: application/xml
Content-ID: <root.attachment>

[XML DOCUMENT]

--INNER-BOUNDARY
Content-type: application/pdf
Content-ID: <2nd.attachment>

[PDF DOCUMENT]

--INNER-BOUNDARY--

--OUTER-BOUNDARY

javax.mailAPIで見つけることができません。助けてください。

4

1 に答える 1

0

私は最近それに苦労していますが、以下のコードは私が思いつくことができる最高のものです(実際には他に何もうまくいきませんでした):

    public class MultipartGenerator {

      //Let's assume the static members below 
      //hold our message parts content 
      //an the instances of arrays of byte

      private static final byte [] ROOT_BYTES = new byte[]{/* ... bytes ... */};

      private static final byte [] ATTCH_1_BYTES = new byte[]{/* ... bytes ... */};

      private static final byte [] ATTCH_2_BYTES = new byte[]{/* ... bytes ... */};

      /**
       * Generate multipart with headers
       *
       * @return javax.mail.Multipart instance
       */
       public static Multipart generateMultipart() {

         //This is our root MimeBodyPart, 
         //content-id equals 'rootcid'
         //content-type equals 'roottype/rootsubtype'

         InternetHeaders ih0 = new InternetHeaders();
         ih0.addHeader("Content-Type", "roottype/rootsubtype");
         ih0.addHeader("Content-Transfer-Encoding", "binary");
         ih0.addHeader("Content-ID", "rootcid");
         MimeBodyPart rootBodyPart = new MimeBodyPart(ih0, ROOT_BYTES);

         //This is a body part wrapping first message attachment
         InternetHeaders ih1 = new InternetHeaders();
         ih1.addHeader("Content-Type", "text/plain; name=attachment1.txt");
         ih1.addHeader("Content-Transfer-Encoding", "binary");
         ih1.addHeader("Content-Location", "attachment1.txt");
         ih1.addHeader("Content-ID", "a00");
         MimeBodyPart attch1BodyPart = new MimeBodyPart(ih1, ATTCH_1_BYTES);

         //This is a body part wrapping second message attachment
         InternetHeaders ih2 = new InternetHeaders();
         ih2.addHeader("Content-Type", "text/plain; name=attachment2.txt");
         ih2.addHeader("Content-Transfer-Encoding", "binary");
         ih2.addHeader("Content-Location", "attachment2.txt");
         ih2.addHeader("Content-ID", "a01");        
         MimeBodyPart attch2BodyPart = new MimeBodyPart(ih2, ATTCH_2_BYTES);

         //This is our desired multipart, this is where things turn a bit dirty
         //No success with setting the parameters in a different way

         Multipart multipart = new MimeMultipart("related;start=\"<rootcid>\";type=\"roottype/rootsubtype\"");

         multipart.addBodyPart(rootBodyPart,0);
         multipart.addBodyPart(attch1BodyPart);
         multipart.addBodyPart(attch2BodyPart);

         return multipart;
       }
    }

このタスクを処理するためのより良い方法があるかもしれませんが、私はそれを見つけることができません。

于 2012-11-13T13:13:57.610 に答える