import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
public class mailTest {
public mailTest() {
}
public static void main(String[] args) {
send();
System.out.println("====");
}
public static void sendGmail() {
SimpleEmail email = new SimpleEmail();
email.setTLS(true);
email.setSmtpPort(587);
email.setSslSmtpPort("587");
email.setHostName("smtp.gmail.com");
email.setAuthentication("[email protected]", "xx"); // 用户名和密码
try {
email.addTo("[email protected]"); // 接收方
email.setFrom("[email protected]"); // 发送方
email.setSubject("Java Mail Test"); // 标题
email.setMsg("Just a simple send test ."); // 内容
System.out.println("start send");
email.send();
}
catch (EmailException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void sendGmailSSL()
{
String to="[email protected]";//change accordingly
//Get the session object
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("[email protected]", "xxxxx");//change accordingly
}
});
//compose message
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));//change accordingly
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
message.setSubject("Hello");
message.setText("Testing.......");
//send message
Transport.send(message);
System.out.println("message sent successfully");
} catch (MessagingException e) {throw new RuntimeException(e);}
}
}
public static void send() {
SimpleEmail email = new SimpleEmail();
email.setSmtpPort(25);
email.setHostName("smtp.21cn.com");
email.setAuthentication("[email protected]", "xx"); // 用户名和密码
try {
email.addTo("[email protected]"); // 接收方
email.setFrom("[email protected]"); // 发送方
email.setSubject("Java Mail Test"); // 标题
email.setMsg("Just a simple send test ."); // 内容
System.out.println("start send");
email.send();
}
catch (EmailException e) {
e.printStackTrace();
}
}
}
package play.utils;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.security.cert.X509Certificate;
import javax.net.SocketFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
// SSL Sockets created by this factory won't check if certificates are signed with a root certificate (or chained from root)
public class YesSSLSocketFactory extends SSLSocketFactory {
public static class YesTrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] cert, String authType) {
}
public void checkServerTrusted(X509Certificate[] cert, String authType) {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}
private SSLSocketFactory factory;
public YesSSLSocketFactory() {
try {
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, new TrustManager[]{new YesTrustManager()}, null);
factory = sslcontext.getSocketFactory();
} catch (Exception ex) {
}
}
public static SocketFactory getDefault() {
return new YesSSLSocketFactory();
}
public Socket createSocket(Socket socket, String s, int i, boolean flag) throws IOException {
return factory.createSocket(socket, s, i, flag);
}
public Socket createSocket() throws IOException {
return factory.createSocket();
}
public Socket createSocket(InetAddress inaddr, int i, InetAddress inaddr1, int j) throws IOException {
return factory.createSocket(inaddr, i, inaddr1, j);
}
public Socket createSocket(InetAddress inaddr, int i) throws IOException {
return factory.createSocket(inaddr, i);
}
public Socket createSocket(String s, int i, InetAddress inaddr, int j) throws IOException {
return factory.createSocket(s, i, inaddr, j);
}
public Socket createSocket(String s, int i) throws IOException {
return factory.createSocket(s, i);
}
public String[] getDefaultCipherSuites() {
return factory.getDefaultCipherSuites();
}
public String[] getSupportedCipherSuites() {
return factory.getSupportedCipherSuites();
}
}
jira: SSLV3
nested exception is:
javax.net.ssl.SSLHandshakeException: Server chose unsupported or disabled protocol: SSLv3
javax.mail.MessagingException: Connect failed
The javax.mail library used by JIRA to retrieve mail messages from POP and IMAP servers does not support the SSLv3 protocol.
The easiest way to resolve this is to enable SSLv3 by adding a startup option and restarting.
For pop3/s, you would add the following option:
-Dmail.pop3s.ssl.protocols=SSLv3
|
For imaps, you would add the following option:
-Dmail.imaps.ssl.protocols=SSLv3
|
Alternately, you can:
参考:http://blog.csdn.net/xiaojiang0829/article/details/17276871