下面列出了怎么用javax.mail.Provider.Type的API类实例代码及写法,或者点击链接到github查看源代码。
private Session buildSession(MailConfig emailConfig) {
Properties properties = new Properties();
properties.setProperty("mail.smtp.host", emailConfig.getHost());
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.port", String.valueOf(emailConfig.getPort()));
//ssl
properties.setProperty("mail.smtp.socketFactory.port", String.valueOf(emailConfig.getPort()));
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.socketFactory.fallback", "false");
properties.setProperty("mail.smtp.starttls.enable", String.valueOf(true));
properties.setProperty("mail.smtp.ssl.checkserveridentity", "true");
//we only need to send the message so we use smtps
properties.setProperty("mail.transport.protocol", "smtps");
//explicit override stmp provider because of issues with relocation
Session session = Session.getDefaultInstance(properties);
try {
session.setProvider(new Provider(Type.TRANSPORT, "smtps",
"flexiblelogin.mail.smtp.SMTPSSLTransport", "Oracle", "1.6.0"));
} catch (NoSuchProviderException noSuchProvider) {
logger.error("Failed to add SMTP provider", noSuchProvider);
}
return session;
}
@Override
public MailSender createSender() throws Exception {
MailSender mailSender = new MailSender() {
Session mailSession;
@Override
protected Session createSession() throws SenderException {
try {
mailSession = super.createSession();
Provider provider = new Provider(Type.TRANSPORT, "smtp", TransportMock.class.getCanonicalName(), "IbisSource.org", "1.0");
mailSession.setProvider(provider);
return mailSession;
} catch(Exception e) {
e.printStackTrace();
throw new SenderException(e);
}
}
@Override
public Message sendMessage(Message message, IPipeLineSession session) throws SenderException, TimeOutException {
super.sendMessage(message, session);
session.put("mailSession", mailSession);
String correlationID = session.getMessageId();
return new Message(correlationID);
}
};
mailSender.setSmtpHost("localhost");
mailSender.setSmtpUserid("user123");
mailSender.setSmtpPassword("secret321");
return mailSender;
}