Как отправить почту Spring реализации с помощью Gmail SMTP? - PullRequest
3 голосов
/ 13 февраля 2010

как отправить почту Spring с использованием gmail smtp?

После выполнения основного метода получение исключения Исключение в потоке "main" java.lang.NoClassDefFoundError: javax / активации / FileTypeMap

public static void main(String[] args) {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost("smtp.gmail.com");
        sender.setPort(25);
        sender.setPassword("xxxxxxx");
        sender.setUsername("businesscaliber@gmail.com");

        MimeMessage message = sender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message);
            helper.setTo("yashwantchavan@gmail.com");
            helper.setText("Thank you for ordering!");
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        sender.send(message);
    }

После помещения активации .jar в путь к классу получение этого исключения

javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. 21sm3277189pzk.7

Ответы [ 5 ]

7 голосов
/ 25 августа 2011

в более короткой, пересмотренной версии сообщения Saurabh вы можете просто:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl" p:host="smtp.gmail.com"
    p:port="587" p:username="donotreply@host.com" p:password="aSmartPassWord">
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.auth">true</prop>
            <prop key="mail.smtp.starttls.enable">true</prop>
            <prop key="mail.smtp.timeout">8500</prop>
        </props>
    </property>
</bean>
1 голос
/ 19 февраля 2015

Вам необходимо добавить строки:

Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
sender.setJavaMailProperties(props);

Класс свойств java.util.Properties.

В первый раз вы получите сообщение об ошибке "... Пожалуйста, войдите в систему через веб-браузер, а затем повторите попытку. ...", поэтому вам нужно будет зайти в свой почтовый ящик Google и прочитать новое письмо. Там будет ссылка для отключения настроек безопасности.

1 голос
/ 13 февраля 2010

Насколько мне известно, GMail поддерживает только зашифрованный SMTP, и сообщение об ошибке говорит об этом довольно окольным путем. Вам нужно настроить Spring для использования этого вместо SMTP открытого текста.

См. этот ответ на предыдущий вопрос, который объясняет, как настроить JavaMailSenderImpl для этого (хотя я не проверял это для себя).

0 голосов
/ 10 февраля 2017

Вот частичный пример использования только конфигурации XML,

<int:channel id="outboundMail"></int:channel>

<int-mail:outbound-channel-adapter id="outboundAdapter" 
        channel="outboundMail"
        host="smtp.gmail.com" 
        username="whateverl@gmail.com" 
        password="whatever" 
        port="587"
        java-mail-properties="javaMailProperties"/>

<util:properties id="javaMailProperties">
    <prop key="mail.debug">false</prop>
    <prop key="mail.smtp.auth">true</prop>
    <prop key="mail.smtp.starttls.enable">true</prop>
    <prop key="mail.smtp.timeout">8500</prop>
</util:properties>
0 голосов
/ 13 февраля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...