Не удается отправить почту из контейнера Docker - PullRequest
1 голос
/ 02 июля 2019

У меня есть приложение Spring mvc, которое я установил.Смотрите эту ссылку , как я докернизировал .До контейнеризации обычная война, развернутая в tomcat, могла отправлять электронные письма, используя хост smtp.gmail.com и порт 587.

Мое определение bean-компонента было таким:

<beans:bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <beans:property name="host" value="smtp.gmail.com" />
    <beans:property name="port" value="587" />
    <beans:property name="username" value="xxxxxx" />
    <beans:property name="password" value="xxxxx" />
    <beans:property name="javaMailProperties">
         <beans:props>
              <beans:prop key="mail.smtp.auth">true</beans:prop>
              <beans:prop key="mail.smtp.starttls.enable">true</beans:prop>
         </beans:props>
    </beans:property>
    </beans:bean>

Теперь я получаю это:

    org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
  nested exception is:
        java.net.ConnectException: Connection refused (Connection refused). Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
  nested exception is:
        java.net.ConnectException: Connection refused (Connection refused); message exception details (1) are:
Failed message 1:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
  nested exception is:
        java.net.ConnectException: Connection refused (Connection refused)
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)

1 Ответ

0 голосов
/ 02 июля 2019

Глядя на предоставленную вами ссылку и предполагая, что это именно то, что вы скопировали для своего Dockerfile, вам потребуется предоставить дополнительный порт для вашего почтового клиента.

Если вы еще не знаете,по умолчанию при создании контейнера он не публикует свои порты во внешнем мире.

В файлах Docker вы можете использовать EXPOSE.В вашем случае вам понадобится EXPOSE 587, чтобы включить связь для SMTP

Кроме того, в будущем, если вам нужно предоставить другие порты с другими протоколами, вы можете использовать

EXPOSE 587/tcp (tcpпо умолчанию)

Если вы хотите узнать больше о EXPOSE Я получил информацию из Докерской документации: https://docs.docker.com/engine/reference/builder/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...