2014-04-01 2 views
0

Не могли бы вы рассказать мне, как использовать библиотеку SubethaSmtp? Я просто хочу получить почту из своего почтового ящика Gmail и отобразить их или один из них в окне консоли.Рабочий пример SubethaSmtp

Я изучил большую часть документа API, но я не могу собрать эти штуки, чтобы заставить все работать.

Не могли бы вы рассказать мне о рабочем примере?

Я написал этот код для создания приложения grails. Вы можете найти некоторые плохие привычки кода, но это просто для примера приложения.

Вот код в SRC/заводной папке:

class MessageHandlerFactoryImpl implements MessageHandlerFactory { 

    @Override 
    MessageHandler create(MessageContext ctx) { 
     return new MessageHandlerImpl(ctx) 
    } 
} 

class MessageHandlerImpl implements MessageHandler { 

    MessageContext context 

    MessageHandlerImpl(MessageContext context) { 
     this.context = context 
    } 

    @Override 
    void from(String from) { 
     println "FROM: ${from}" 
    } 

    @Override 
    void recipient(String recipient) { 
     println "RECIPIENT: ${recipient}" 

    } 

    @Override 
    void data(InputStream data) { 
     println "DATA" 
     println "-------------------" 

     BufferedReader reader = new BufferedReader(new InputStreamReader(data)) 
     StringBuilder builder = new StringBuilder() 
     String line 
     while ((line = reader.readLine()) != null) { 
      builder.append(line + "\n") 
     } 
     println builder.toString() 
    } 

    @Override 
    void done() { 
     println "DONE" 

    } 
} 

class SimpleMessageListenerImpl implements SimpleMessageListener { 
    @Override 
    boolean accept(String from, String recipient) { 
     println "accept: ${from} \n>> ${recipient}" 
     return false 
    } 

    @Override 
    void deliver(String from, String recipient, InputStream data) { 
     try { 
      println "deliver: ${from} \n>> ${recipient} \n>>> ${data.read()}" 
     } catch (TooMuchDataException e) { 
      println "TooMuchDataException: ${e.message}" 
     } catch (IOException e) { 
      println "IOException: ${e.message}" 
     } 
    } 
} 

class UsernamePasswordValidatorImpl implements UsernamePasswordValidator { 
    @Override 
    void login(String username, String password) { 
     try { 

      println "LOGIN:::::::" 
     } catch(LoginFailedException e) { 
      println "LoginFailedException: ${e.message}" 
     } 
    } 
} 

И вот мой код контроллера.

class SubethaController { 

    SMTPServer server 
    def index() { 

     MessageHandlerFactoryImpl factory = new MessageHandlerFactoryImpl() 
     server = new SMTPServer(factory) 
     server.hostName = "imap.gmail.com" 
     server.port = 993 
     server.authenticationHandlerFactory = new EasyAuthenticationHandlerFactory(new UsernamePasswordValidatorImpl()) 
     server.start() 
    } 

    def stop() { 
     server?.stop() 
    } 

    Wiser wiser 
    def wiser() { 
     server = new SMTPServer(new SimpleMessageListenerAdapter(new SimpleMessageListenerImpl())) 
     server.start() 
     wiser = new Wiser() 
     wiser.setPort(25001) 
     wiser.start() 

     for (WiserMessage message : wiser.getMessages()) 
     { 
      String eSender = message.getEnvelopeSender() 
      String eReceiver = message.getEnvelopeReceiver() 

      println ">>>>>>>message.getMimeMessage ${message.getMimeMessage()}" 
     } 
    } 
    def wiserS() { 
     wiser?.stop() 
    } 


} 

Спасибо.

+1

Google.com: пример subethasmtp –

+0

Да, я искал Google много. Простой пример, который поставляется с библиотекой, не очень полезен. Можете ли вы, пожалуйста, конкретно сказать мне, какой пример или документ? –

+0

Nope. что ты уже испробовал? Я не трачу время на твою работу, если ты не можешь даже приложить никаких усилий. И когда я говорю «усилие», я имею в виду фактический код, даже если он ошибается. –

ответ

4

Okey ... Я нашел ответ ... Код хорошо написан и работает нормально. Я просто не знал, как отправлять сообщения на прослушивание smtp-сервер на порт. Я только что использовал telnet и отправил электронные письма на сервер smtp работает на localhost. Теперь я создам DNS mapping, чтобы он работал в Интернете.

Спасибо Nicolás за проявленный интерес.

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