Spring XD - конфигурация приемника почты для Outlook

Я пытаюсь настроить почтовый приемник Spring XD для отправки сообщений в учетную запись Outlook. Это мое определение потока:

stream create outlookMailSink --definition "http | mail --to='\"[email protected]\"' --host=outlook.office365.com --subject=payload+' world'" --deploy

Я тестирую эту команду оболочки:

http post --data Hello

Я получаю следующее сообщение об ошибке:

Failed message 1: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM

at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:84)

Я исследовал это в документации Spring XD и поисках в Интернете, но я не нашел решения, которое работает. Кто-нибудь может мне помочь с этим, пожалуйста?


person Stuart    schedule 27.02.2015    source источник


Ответы (1)


Я нашел решение, которое включает создание нового модуля приемника почты, который представляет собой небольшую модификацию модуля приемника почты, поставляемого Spring XD. Поток также должен включать параметры «Кому», «От», «Хост», «Порт», «Имя пользователя» и «Пароль».

  1. Скопируйте папку ..\spring-xd-<version>\xd\modules\sink\mail и переименуйте ее в защищенную почту.
  2. В ..\spring-xd-<version>\xd\modules\sink\secure-mail переименуйте и mail.properties, и mail.xml в secure-mail.properties и secure-mail.xml соответственно.
  3. Замените содержимое secure-mail.xml следующим:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans:beans xmlns="http://www.springframework.org/schema/integration"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:file="http://www.springframework.org/schema/integration/file"
    xmlns:int-mail="http://www.springframework.org/schema/integration/mail"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:util="http://www.springframework.org/schema/util"
        xsi:schemaLocation="http://www.springframework.org/schema/integration/mail http://www.springframework.org/schema/integration/mail/spring-integration-mail.xsd
        http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
    
    <channel id="input" />
    
    <int-mail:header-enricher input-channel="input" output-channel="send">
        <int-mail:to expression="${to:null}" />
        <int-mail:from expression="${from:null}" />
        <int-mail:subject expression="${subject:null}" />
        <int-mail:cc expression="${cc:null}" />
        <int-mail:bcc expression="${bcc:null}" />
        <int-mail:reply-to expression="${replyTo:null}" />
        <int-mail:content-type expression="${contentType:null}" />
    </int-mail:header-enricher>
    
    <channel id="send" />
    
    <int-mail:outbound-channel-adapter
        channel="send" host="${host}" port="${port}" username="${username:}"
        password="${password:}" java-mail-properties="javaMailProperties"/>
    
    <util:properties id="javaMailProperties">
        <beans:prop key="mail.smtp.starttls.enable">true</beans:prop>
    </util:properties>
    
    </beans:beans>
    
  4. Создайте поток следующим образом:

    stream create outlookMailSink --definition "http | secure-mail --to='\"[email protected]\"' --from='\"[email protected]\"' --host=outlook.office365.com --port=587 [email protected] --password=password --subject=payload+' world'" --deploy
    
  5. Тест с помощью команды оболочки: http post --data Hello

Содержимое secure-mail.xml почти идентично mail.xml, ключ состоит в том, чтобы установить для свойства mail.smtp.starttls.enable значение true, чтобы включить шифрование TLS для связи через порт 587. Конечно, вы можете просто изменить модуль приемника почты Spring XD. напрямую и используйте это - решать вам.

Мне было бы интересно услышать, есть ли у кого-нибудь лучшее решение для этого? Например, можно ли установить свойство mail.smtp.starttls.enable при запуске Spring XD, что позволит вам использовать исходный модуль приемника почты? Я попробовал это, изменив сценарий запуска xd-singlenode - свойство было установлено, но это не повлияло на модуль приемника почты.

Ссылки:

person Stuart    schedule 27.02.2015