2323import java .util .stream .Stream ;
2424import java .util .stream .StreamSupport ;
2525
26+ /**
27+ * Main core class that offers email/PEC extraction
28+ *
29+ * @author Biagio Tozzi
30+ */
2631@ AllArgsConstructor (access = AccessLevel .PRIVATE )
2732public class MailParser {
2833
2934 private Properties properties ;
3035 private boolean extractAllHeaders ;
3136
37+ /**
38+ * Default {@link MailParser} instance.
39+ * <ul>
40+ * <li>properties: System.getProperties(). System default properties</li>
41+ * <li>extractAllHeaders: false. Not all additional headers will be extracted</li>
42+ * </ul>
43+ *
44+ * @return {@link MailParser} instance
45+ */
3246 public static MailParser getInstance () {
3347 return new MailParser (null , false );
3448 }
3549
50+ /**
51+ * {@link MailParser} instance with custom properties
52+ * <ul>
53+ * <li>extractAllHeaders: false. Not all additional headers will be extracted</li>
54+ * </ul>
55+ *
56+ * @return {@link MailParser} instance
57+ */
3658 public static MailParser getInstance (Properties properties ) {
3759 return new MailParser (properties , false );
3860 }
3961
62+ /**
63+ * {@link MailParser} instance with the extraction of all the headers
64+ *
65+ * @return {@link MailParser} instance
66+ */
4067 public static MailParser getInstance (boolean extractAllHeaders ) {
4168 return new MailParser (null , extractAllHeaders );
4269 }
4370
71+ /**
72+ * {@link MailParser} instance with the extraction of all the headers and custom properties
73+ *
74+ * @return {@link MailParser} instance
75+ */
4476 public static MailParser getInstance (Properties properties , boolean extractAllHeaders ) {
4577 return new MailParser (properties , extractAllHeaders );
4678 }
4779
80+ /**
81+ * Extracts a {@link ParsedEntity} from a mail MIME message.<br>
82+ * ParsedEntity can be:
83+ * <ul>
84+ * <li>{@link Mail}: simple mail</li>
85+ * <li>{@link PEC}: Posta Elettronica Certificata - Italian certified electronic mail </li>
86+ * <li>{@link PECReceipt}: Italian certified electronic mail receipt</li>
87+ * </ul>
88+ *
89+ * @param mimeMessage {@link MimeMessage} mail MIME message
90+ * @return {@link ParsedEntity}
91+ */
4892 public ParsedEntity parse (MimeMessage mimeMessage ) {
4993
5094 var xTranspHeader = MimeMessageUtils .getHeader (mimeMessage , PECConstants .X_TRASPORTO );
@@ -58,6 +102,18 @@ public ParsedEntity parse(MimeMessage mimeMessage) {
58102 return parsedEntity ;
59103 }
60104
105+ /**
106+ * Extracts a {@link ParsedEntity} from a mail message.<br>
107+ * ParsedEntity can be:
108+ * <ul>
109+ * <li>{@link Mail}: simple mail</li>
110+ * <li>{@link PEC}: Posta Elettronica Certificata - Italian certified electronic mail </li>
111+ * <li>{@link PECReceipt}: Italian certified electronic mail receipt</li>
112+ * </ul>
113+ *
114+ * @param eml {@link File} mail eml MIME message
115+ * @return {@link ParsedEntity}
116+ */
61117 public ParsedEntity parse (File eml ) {
62118
63119 if (eml == null || !eml .exists ()) {
@@ -72,6 +128,18 @@ public ParsedEntity parse(File eml) {
72128 }
73129 }
74130
131+ /**
132+ * Extracts a {@link ParsedEntity} from a mail message.<br>
133+ * ParsedEntity can be:
134+ * <ul>
135+ * <li>{@link Mail}: simple mail</li>
136+ * <li>{@link PEC}: Posta Elettronica Certificata - Italian certified electronic mail </li>
137+ * <li>{@link PECReceipt}: Italian certified electronic mail receipt</li>
138+ * </ul>
139+ *
140+ * @param eml {@link InputStream} eml mail mime message
141+ * @return {@link ParsedEntity}
142+ */
75143 public ParsedEntity parse (InputStream eml ) {
76144 return parse (MimeMessageUtils .createMimeMessage (eml , properties ));
77145 }
@@ -131,9 +199,9 @@ private static ParsedEntity extract(MimeMessage mimeMessage, boolean isPEC, bool
131199 return extractContent (mail , mimeMessage , isPEC , isPECReceipt , properties , extractAllHeaders );
132200 }
133201
134- private static ParsedEntity extractContent (Mail mail , MimePart part , boolean isPEC , boolean isPECReceipt , Properties properties , boolean extractAllHeaders ) {
202+ private static ParsedEntity extractContent (Mail mail , MimeMessage mimeMessage , boolean isPEC , boolean isPECReceipt , Properties properties , boolean extractAllHeaders ) {
135203 DataSourcePair <DataSource , DataSource > dsp = isPEC || isPECReceipt ? new DataSourcePair <>() : null ;
136- extractContent (mail , part , isPEC , isPECReceipt , dsp );
204+ extractContent (mail , mimeMessage , isPEC , isPECReceipt , dsp );
137205
138206 if (isPEC || isPECReceipt ) {
139207
@@ -143,7 +211,7 @@ private static ParsedEntity extractContent(Mail mail, MimePart part, boolean isP
143211
144212 try {
145213 var postaCertMimeMessage = dsp .getElementA () != null ? MimeMessageUtils .createMimeMessage (dsp .getElementA ().getInputStream (), properties ) : null ;
146- return PECHandler .loadPEC (postaCertMimeMessage != null ? (Mail ) extract (postaCertMimeMessage , false , false , properties , extractAllHeaders ) : null , mail , dsp .getElementA (), dsp .getElementB ());
214+ return PECHandler .loadPEC (postaCertMimeMessage != null ? (Mail ) extract (postaCertMimeMessage , false , false , properties , extractAllHeaders ) : null , mail , dsp .getElementA (), dsp .getElementB (), mimeMessage );
147215
148216 } catch (IOException e ) {
149217 throw new MailParserException (e );
0 commit comments