gpt4 book ai didi

java - 假 javax.mail.Session

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:40 26 4
gpt4 key购买 nike

我有一个发送电子邮件的应用程序。但是在我的开发环境中,我不希望应用程序发送电子邮件,而应该只在日志文件中打印消息。

有一个假的 javax.mail.Session 实现我可以做到这一点?

最佳答案

对于这个问题,我将使用注册到 SMTP 协议(protocol)的自定义 javax.mail.Transport

首先实现CustomTransport类

import javax.mail.Transport;
import javax.mail.*;

public class CustomTransport extends Transport {

public CustomTransport(Session smtpSession, URLName urlName) {
super(smtpSession, urlName);
}

@Override
public void sendMessage(Message message, Address[] addresses) throws MessagingException {
// Take the message and write it somewhere
// e.g.: a logger or an OutputStream message.writeTo(...);
}

@Override
public void connect() throws MessagingException {}

@Override
public void connect(String host, int port, String username, String password) throws MessagingException {}

@Override
public void connect(String host, String username, String password) throws MessagingException {}

@Override
public void close() {}
}

之后您可以使用该 CustomTransport 创建一个 javax.mail.Session 将您的邮件写入定义的位置

public Session getMailSession(){
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.provider.class", CustomTransport.class.getName());
props.put("mail.smtp.provider.vendor", "foo");
props.put("mail.smtp.provider.version", "0.0.0");

return Session.getInstance(props);
}

关于java - 假 javax.mail.Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033673/

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