2014-04-01 211 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

没有。你试过什么了?如果你不能付出任何努力,我不会浪费时间做你的工作。当我说'努力'时,我的意思是实际的代码,即使它是错误的。 –

回答

4

Okey ...我找到了答案...代码写得很好,工作正常。我只是不知道如何发送消息来侦听smtp服务器端口。我只用telnet程序并发送邮件到smtp服务器运行在本地主机。现在我将创建DNS映射以使其在Internet上工作。

感谢Nicolás对你的兴趣。