在 SMTP 协议和 JavaMail 中保存会话 api
Save Session in SMTP protocol and JavaMail api
我开发了一个 Java 代表用户发送电子邮件的应用程序。
为了避免保存用户密码,我想保存Mail Session。
但是,我看到在 Java 的 SMTP 协议的邮件 api 中,实现对发送的每封邮件进行身份验证!
它只是一个实现还是在SMTP协议中声明如此?
我的代码:
我正在使用 JavaMail API 启动 SMTP 会话并发送电子邮件,如下所示:
//Set up headers
String from,to...
//Set up authentication
Properties props = new Properties();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user,password);
}
});
//Set up message
MimeMessage message = new MimeMessage(session);
...
//Send message
Transport.send(message);
而在Transport.send(message)中(在JavaMailapi中),有如下实现:
try{
this.Connect()
this.SendMessage(message)
this.CloseConnection()
}
我可以在没有 transport.CloseConnection() 的情况下使用 transport.SendMessage(message) 的实现吗?
因此我将保存会话并继续使用它。
SMTP 会支持吗?会话将保留多长时间?
嗯,它似乎工作正常。
而不是使用
Transport.send(message);
使用:
Transport transport = message.getTransport(address);
try{
transport.connect();
}catch (Exception e){
//already connected
}
transport.sendMessage(message);
我开发了一个 Java 代表用户发送电子邮件的应用程序。
为了避免保存用户密码,我想保存Mail Session。 但是,我看到在 Java 的 SMTP 协议的邮件 api 中,实现对发送的每封邮件进行身份验证!
它只是一个实现还是在SMTP协议中声明如此?
我的代码:
我正在使用 JavaMail API 启动 SMTP 会话并发送电子邮件,如下所示:
//Set up headers
String from,to...
//Set up authentication
Properties props = new Properties();
props.put("mail.smtp.host",host);
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user,password);
}
});
//Set up message
MimeMessage message = new MimeMessage(session);
...
//Send message
Transport.send(message);
而在Transport.send(message)中(在JavaMailapi中),有如下实现:
try{
this.Connect()
this.SendMessage(message)
this.CloseConnection()
}
我可以在没有 transport.CloseConnection() 的情况下使用 transport.SendMessage(message) 的实现吗? 因此我将保存会话并继续使用它。
SMTP 会支持吗?会话将保留多长时间?
嗯,它似乎工作正常。 而不是使用
Transport.send(message);
使用:
Transport transport = message.getTransport(address);
try{
transport.connect();
}catch (Exception e){
//already connected
}
transport.sendMessage(message);