Search in sources :

Example 1 with Header

use of jakarta.mail.Header in project spring-integration by spring-projects.

the class DefaultMailHeaderMapper method toHeaders.

@Override
public Map<String, Object> toHeaders(MimeMessage source) {
    Map<String, Object> headers = MailUtils.extractStandardHeaders(source);
    try {
        Enumeration<?> allHeaders = source.getAllHeaders();
        MultiValueMap<String, String> rawHeaders = new LinkedMultiValueMap<String, String>();
        while (allHeaders.hasMoreElements()) {
            Object headerInstance = allHeaders.nextElement();
            if (headerInstance instanceof Header) {
                Header header = (Header) headerInstance;
                rawHeaders.add(header.getName(), header.getValue());
            }
        }
        headers.put(MailHeaders.RAW_HEADERS, rawHeaders);
        headers.put(MailHeaders.FLAGS, source.getFlags());
        int lineCount = source.getLineCount();
        if (lineCount > 0) {
            headers.put(MailHeaders.LINE_COUNT, lineCount);
        }
        Date receivedDate = source.getReceivedDate();
        if (receivedDate != null) {
            headers.put(MailHeaders.RECEIVED_DATE, receivedDate);
        }
        int size = source.getSize();
        if (size > 0) {
            headers.put(MailHeaders.SIZE, size);
        }
        headers.put(MailHeaders.EXPUNGED, source.isExpunged());
        headers.put(MailHeaders.CONTENT_TYPE, source.getContentType());
    } catch (Exception e) {
        throw new MessagingException("Failed to map message headers", e);
    }
    return headers;
}
Also used : Header(jakarta.mail.Header) LinkedMultiValueMap(org.springframework.util.LinkedMultiValueMap) MessagingException(org.springframework.messaging.MessagingException) Date(java.util.Date) MessagingException(org.springframework.messaging.MessagingException)

Example 2 with Header

use of jakarta.mail.Header in project exist by eXist-db.

the class MessageListFunctions method getMessageListAsXML.

private Sequence getMessageListAsXML(Sequence[] args, Sequence contextSequence) throws XPathException {
    Message[] msgList;
    Sequence ret = Sequence.EMPTY_SEQUENCE;
    // was a msgList handle specified?
    if (args[0].isEmpty()) {
        throw (new XPathException(this, "Message List handle not specified"));
    }
    // get the MessageList
    long msgListHandle = ((IntegerValue) args[0].itemAt(0)).getLong();
    msgList = MailModule.retrieveMessageList(context, msgListHandle);
    if (msgList == null) {
        throw (new XPathException(this, "Invalid Message List handle specified"));
    }
    if (msgList.length > 0) {
        boolean includeHeaders = args[1].effectiveBooleanValue();
        context.pushDocumentContext();
        try {
            MemTreeBuilder builder = context.getDocumentBuilder();
            builder.startDocument();
            builder.startElement(new QName("messages", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
            builder.addAttribute(new QName("count", null, null), String.valueOf(msgList.length));
            try {
                for (Message message : msgList) {
                    builder.startElement(new QName("message", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                    builder.addAttribute(new QName("number", null, null), String.valueOf(message.getMessageNumber()));
                    // Sent Date
                    if (message.getSentDate() != null) {
                        builder.startElement(new QName("sent", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                        builder.characters(formatDate(message.getSentDate()));
                        builder.endElement();
                    }
                    // Received Date
                    if (message.getReceivedDate() != null) {
                        builder.startElement(new QName("received", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                        builder.characters(formatDate(message.getReceivedDate()));
                        builder.endElement();
                    }
                    // From
                    if (message.getFrom() != null) {
                        builder.startElement(new QName("from", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                        builder.characters(message.getFrom()[0].toString());
                        builder.endElement();
                    }
                    // Recipients
                    builder.startElement(new QName("recipients", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                    // To Recipients
                    Address[] toAddresses = message.getRecipients(Message.RecipientType.TO);
                    if (toAddresses != null) {
                        for (Address to : toAddresses) {
                            builder.startElement(new QName("recipient", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                            builder.addAttribute(new QName("type", null, null), "to");
                            builder.characters(to.toString());
                            builder.endElement();
                        }
                    }
                    // cc Recipients
                    Address[] ccAddresses = message.getRecipients(Message.RecipientType.CC);
                    if (ccAddresses != null) {
                        for (Address ccAddress : ccAddresses) {
                            builder.startElement(new QName("recipient", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                            builder.addAttribute(new QName("type", null, null), "cc");
                            builder.characters(ccAddress.toString());
                            builder.endElement();
                        }
                    }
                    // bcc Recipients
                    Address[] bccAddresses = message.getRecipients(Message.RecipientType.BCC);
                    if (bccAddresses != null) {
                        for (Address bccAddress : bccAddresses) {
                            builder.startElement(new QName("recipient", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                            builder.addAttribute(new QName("type", null, null), "bcc");
                            builder.characters(bccAddress.toString());
                            builder.endElement();
                        }
                    }
                    builder.endElement();
                    // Flags
                    Flags flags = message.getFlags();
                    Flags.Flag[] systemFlags = flags.getSystemFlags();
                    String[] userFlags = flags.getUserFlags();
                    if (systemFlags.length > 0 || userFlags.length > 0) {
                        builder.startElement(new QName("flags", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                        for (Flags.Flag systemFlag : systemFlags) {
                            if (systemFlag == Flags.Flag.ANSWERED) {
                                builder.startElement(new QName("flag", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                                builder.addAttribute(new QName("type", null, null), "answered");
                                builder.endElement();
                            } else if (systemFlag == Flags.Flag.DELETED) {
                                builder.startElement(new QName("flag", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                                builder.addAttribute(new QName("type", null, null), "deleted");
                                builder.endElement();
                            } else if (systemFlag == Flags.Flag.DRAFT) {
                                builder.startElement(new QName("flag", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                                builder.addAttribute(new QName("type", null, null), "draft");
                                builder.endElement();
                            } else if (systemFlag == Flags.Flag.FLAGGED) {
                                builder.startElement(new QName("flag", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                                builder.addAttribute(new QName("type", null, null), "flagged");
                                builder.endElement();
                            } else if (systemFlag == Flags.Flag.RECENT) {
                                builder.startElement(new QName("flag", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                                builder.addAttribute(new QName("type", null, null), "recent");
                                builder.endElement();
                            } else if (systemFlag == Flags.Flag.SEEN) {
                                builder.startElement(new QName("flag", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                                builder.addAttribute(new QName("type", null, null), "seen");
                                builder.endElement();
                            }
                        }
                        for (String userFlag : userFlags) {
                            builder.startElement(new QName("flag", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                            builder.addAttribute(new QName("type", null, null), "user");
                            builder.addAttribute(new QName("value", null, null), userFlag);
                            builder.endElement();
                        }
                        builder.endElement();
                    }
                    if (includeHeaders) {
                        Enumeration headers = message.getAllHeaders();
                        if (headers.hasMoreElements()) {
                            builder.startElement(new QName("headers", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                            while (headers.hasMoreElements()) {
                                Header header = (Header) headers.nextElement();
                                builder.startElement(new QName("header", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                                builder.addAttribute(new QName("name", null, null), header.getName());
                                builder.addAttribute(new QName("value", null, null), header.getValue());
                                builder.endElement();
                            }
                            builder.endElement();
                        }
                    }
                    // Subject
                    builder.startElement(new QName("subject", MailModule.NAMESPACE_URI, MailModule.PREFIX), null);
                    builder.characters(message.getSubject());
                    builder.endElement();
                    builder.endElement();
                }
            } catch (MessagingException me) {
                throw (new XPathException(this, "Failed to retrieve messages from list", me));
            }
            builder.endElement();
            ret = (NodeValue) builder.getDocument().getDocumentElement();
        } finally {
            context.popDocumentContext();
        }
    }
    return (ret);
}
Also used : Enumeration(java.util.Enumeration) Message(jakarta.mail.Message) Address(jakarta.mail.Address) XPathException(org.exist.xquery.XPathException) MessagingException(jakarta.mail.MessagingException) QName(org.exist.dom.QName) IntegerValue(org.exist.xquery.value.IntegerValue) Sequence(org.exist.xquery.value.Sequence) Flags(jakarta.mail.Flags) MemTreeBuilder(org.exist.dom.memtree.MemTreeBuilder) Header(jakarta.mail.Header)

Aggregations

Header (jakarta.mail.Header)2 Address (jakarta.mail.Address)1 Flags (jakarta.mail.Flags)1 Message (jakarta.mail.Message)1 MessagingException (jakarta.mail.MessagingException)1 Date (java.util.Date)1 Enumeration (java.util.Enumeration)1 QName (org.exist.dom.QName)1 MemTreeBuilder (org.exist.dom.memtree.MemTreeBuilder)1 XPathException (org.exist.xquery.XPathException)1 IntegerValue (org.exist.xquery.value.IntegerValue)1 Sequence (org.exist.xquery.value.Sequence)1 MessagingException (org.springframework.messaging.MessagingException)1 LinkedMultiValueMap (org.springframework.util.LinkedMultiValueMap)1