2010-02-13 2 views
3

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

После выполнения основного метода получения exeception Исключения в потоке "основная" 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("[email protected]"); 

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

     sender.send(message); 
    } 

После ввода activation.jar в классе пути получения этого исключения

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

ответ

0
+0

после выполнения способа получения следующего исключения Исключения в потоке «основная» java.lang.NoClassDefFoundError: javax/активация/FileTypeMap \t на ком .businesscaliber.utility.Mailer.main (Mailer.java:13) – Vicky

+0

кажется, что в jar отсутствует путь от classpath ... есть активация.jar? – user262976

+0

после добавления активирующего банка, получающего еще одно исключение javax.mail.MessagingException: 530 5.7.0 Сначала необходимо выполнить команду STARTTLS. 21sm3277189pzk.7 – Vicky

1

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

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

7

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

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl" p:host="smtp.gmail.com" 
    p:port="587" p:username="[email protected]" 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

Вам нужно добавить строки:

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

Properties является java.util.Properties.

В первый раз вы получите сообщение об ошибке «... войдите в свой веб-браузер, а затем повторите попытку ...», поэтому вам нужно будет перейти в свой почтовый ящик google и прочитать новое письмо. Будет ссылка для отключения настройки безопасности.

0

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

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

<int-mail:outbound-channel-adapter id="outboundAdapter" 
     channel="outboundMail" 
     host="smtp.gmail.com" 
     username="[email protected]" 
     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> 
Смежные вопросы