gpt4 book ai didi

java - SubethaSmtp 工作示例

转载 作者:行者123 更新时间:2023-12-01 18:34:09 25 4
gpt4 key购买 nike

请告诉我如何使用SubethaSmtp图书馆?我只想从 Gmail 收件箱中检索邮件并在控制台窗口中显示它们或其中一封。

我研究了大部分 API 文档,但我无法将这些部分组合在一起以使其正常工作。

您能告诉我一个可行的示例吗?

我编写这段代码是为了构建一个 Grails 应用程序。您可能会发现一些不好的代码习惯,但这对于示例应用程序来说是可以的。

这是 src/groovy 文件夹中的代码:

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}"
}
}
}
<小时/>

这是我的 Controller 代码。

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()
}


}
<小时/>

谢谢。

最佳答案

好的...我找到了答案...代码写得很好并且运行良好。我只是不知道如何向端口上的监听smtp服务器发送消息。我只是使用telnet程序并将电子邮件发送到在localhost上运行的smtp服务器。现在我将创建DNS 映射以使其在 Internet 上运行。

感谢 Nicolás 表现出您的兴趣。

关于java - SubethaSmtp 工作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22778480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com