2014-09-26 10 views
0

Я пытаюсь отправить простую почту, используя весну.Отправка электронной почты весной с помощью Java Mail

Это определение bean-адреса отправителя в конфигурации java.

@Bean 
    public JavaMailSender javaMailService() { 
     JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 
     mailSender.setSession(getMailSession()); 
     return mailSender; 
    } 

    public Session getMailSession() { 
     JndiTemplate template = new JndiTemplate(); 
     Session session = null; 
     try { 
      session = (Session) template.lookup("java:jboss/mail/Default"); 
     } catch (NamingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return session; 
    } 

Я работаю с jboss wildfly, и бобы создаются без каких-либо проблем.

Вот мой код для отправки электронной почты.

@Autowired 
private JavaMailSender mailSender; 

@Override 
public void sendMail(String mailTo, String subject, String content) throws MessagingException{ 
    MimeMessage message = mailSender.createMimeMessage(); 
    message.setSubject(subject); 
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailTo,false)); 
    mailSender.send(message); 
} 

JavaMailSender вводится правильно. когда я отлаживаю выполнение, происходит до mailsender.send() метода. и он начинает зависать.

Кажется, все конфигурации в jboss верны. Я также попытался указать параметры почтового сервера в компоненте. но все же он не работает.

Что я здесь делаю неправильно?

+0

Правильно ли настроен почтовый сеанс в JBoss? Является ли сервер SMTP запущенным и работает, вы можете фактически подключиться к серверу от JBoss. Похож на проблему конфигурации сеанса почты для меня. –

+0

Я использую gmail smtp. и я могу telnet и подключиться к нему. это то, что я использовал: telent smtp.gmail.com 465 –

+0

это моя конфигурация jboss: <имя входа = "имя пользователя" пароль = "пароль" /> \t <исходящее -socket-binding name = "smtp.gmail.com"> <удаленный хост = "smtp.gmail.com" port = "465" />

ответ

0

Следуйте этим инструкциям, чтобы отправить по электронной почте с Spring и Gmail: Email with Spring and Gmail

Вы полностью отсутствует часть аутентификации. Убедитесь, что адрес SMTP-сервера Gmail верен.

Взятые из вышеуказанной ссылки, это должны быть конфигурации;

<property name="host" value="smtp.gmail.com" /> 
    <property name="port" value="587" /> 
    <property name="username" value="username" /> 
    <property name="password" value="password" /> 

    <property name="javaMailProperties"> 
     <props> 
       <prop key="mail.smtp.auth">true</prop> 
       <prop key="mail.smtp.starttls.enable">true</prop> 
      </props> 
    </property> 
0

Несмотря на то, что проблема уже решена, я столкнулся с подобной проблемой, и ни один из шагов, упомянутых выше, и на других потоках не работал. Мне пришлось дополнительно указать протокол как SMTPS для этого. Итак, вот мой фрагмент рабочего кода.

@Bean 
    JavaMailSender javaMailSender() { 
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 
    mailSender.setHost(props.getHost()); 
    mailSender.setPort(props.getPort()); 
    mailSender.setUsername(props.getUsername()); 
    mailSender.setPassword(props.getPassword()); 

    Properties mailProperties = new Properties(); 
    mailProperties.put("mail.smtp.auth", props.getSmtp().isAuth()); 
    mailProperties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    mailProperties.put("mail.smtp.starttls.enable", props.getSmtp().isStarttlsEnable()); 
    mailSender.setJavaMailProperties(mailProperties); 
    mailSender.setProtocol("smtps"); 

    return mailSender; 

    } 
Смежные вопросы