Java 邮件 API 凭据验证
Java Mail API credentials verification
问题: 在使用 Java 邮件 [=48] 时,是否有任何 其他 方法可以在发送电子邮件之前验证凭据=]?
简介:
我的目标是将发送电子邮件分为两个步骤:
登录(如果用户名或密码不匹配,用户将收到相应的消息)
发送电子邮件
目前我正在通过这段代码实现它:
...
// no Authenticator implementation as a parameter
Session session = Session.getInstance(Properties props);
Transport transport = session.getTransport("smtp");
transport.connect(username, password);
transport.sendMessage(Message msg, Address[] addresses);
...
结论:
我的工作做得很好,但我很好奇是否还有其他方法可以实现相同的目标?
您的代码中已经有了答案。 connect 方法使用您的用户名和密码登录,如果失败则抛出异常,然后 sendMessage 消息发送消息。真的不明显吗?
发送电子邮件前验证凭据的另一种方法
这种方法比我的第一种方法更方便,原因有二:
- 我们不需要让 Transport 的实例保持活动状态
- 要发送电子邮件,我们可以简单地使用 Transport 的静态方法
send(Message msg)
,我们之前无法使用它
这次我们需要在getInstance()
方法中传递Authenticator
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(“username”, “password”);
}
}
/*
* no need to pass protocol to getTransport()
* no need to pass username and password to connect()
* if credentials were incorrect, you would get a corresponding error
*/
session.getTransport().connect();
// no need to use instance, we simply use static method
Transport.send(message);
问题: 在使用 Java 邮件 [=48] 时,是否有任何 其他 方法可以在发送电子邮件之前验证凭据=]?
简介:
我的目标是将发送电子邮件分为两个步骤:
登录(如果用户名或密码不匹配,用户将收到相应的消息)
发送电子邮件
目前我正在通过这段代码实现它:
...
// no Authenticator implementation as a parameter
Session session = Session.getInstance(Properties props);
Transport transport = session.getTransport("smtp");
transport.connect(username, password);
transport.sendMessage(Message msg, Address[] addresses);
...
结论: 我的工作做得很好,但我很好奇是否还有其他方法可以实现相同的目标?
您的代码中已经有了答案。 connect 方法使用您的用户名和密码登录,如果失败则抛出异常,然后 sendMessage 消息发送消息。真的不明显吗?
发送电子邮件前验证凭据的另一种方法
这种方法比我的第一种方法更方便,原因有二:
- 我们不需要让 Transport 的实例保持活动状态
- 要发送电子邮件,我们可以简单地使用 Transport 的静态方法
send(Message msg)
,我们之前无法使用它
这次我们需要在getInstance()
方法中传递Authenticator
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(“username”, “password”);
}
}
/*
* no need to pass protocol to getTransport()
* no need to pass username and password to connect()
* if credentials were incorrect, you would get a corresponding error
*/
session.getTransport().connect();
// no need to use instance, we simply use static method
Transport.send(message);