我正在尝试使用java向gmail发送电子邮件。我正在使用此代码。
final String username = "xyz@gmail.com";
final String password = "**********";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host","smtp.gmail.com");
props.put("mail.smtp.port","587");
Session session = Session.getInstance(props,new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(username,password);
}
});
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("xyz@gmail.com"));
message.setRecipient(Message.RecipientType.TO,newInternetAddress("abcdef@gmail.com"));
message.setSubject("First email to using java");
message.setContent("<h:body style =background-color:white> This is a test mail sent using java" + "</body>","text/html; charset=utf-8");
Transport.send(message);
System.out.println("Message Sent");
但是当我运行上面的代码时,它会显示以下错误:
Exception in thread "main" com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 587; timeout -1;
我有一个使用代理服务器并需要身份验证的Internet连接。这是因为Proxy的错误还是我的代码中存在一些问题。请告诉我如何解决它。
答案 0 :(得分:0)
是的,这是因为您的代理服务器。
答案 1 :(得分:0)
JavaMail不能直接使用Web代理服务器,尽管它可以使用SOCKS代理服务器。如果您只有一个Web代理服务器,像Corkscrew这样的程序可以提供帮助。
您可以在JavaMail中设置SOCKS代理服务器,如下所示:
Properties p = System.getProperties();
p.setProperty("proxySet","true");
p.setProperty("socksProxyHost","192.168.1.1");
p.setProperty("socksProxyPort","1234");