我正在尝试通过此代码在java中发送邮件。但我没有发送电子邮件
public static void main(String[] args) {
String to = "abc@gmail.com";
String from = "xtz@gmail.com";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
Session session = Session.getDefaultInstance(properties);
try {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("This is Subject");
message.setText("This is The message Body");
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (MessagingException ex) {
System.out.println("This is Exception Part >-------->"+ex);
}
}
但我发现了这个例外
javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
nested exception is:
java.net.ConnectException: Connection refused: connect
答案 0 :(得分:0)
您的SMTP服务器(甚至在您的计算机上运行)很可能没有在端口25上侦听,因此您要做的是尝试连接到其他端口,例如587.
如果未在 Transport 属性中指定要连接的端口,则应用程序将默认尝试连接到端口25。
为了指定不同于默认端口的端口,需要添加以下代码:
Transport transport = session.getTransport("smtp");
transport.connect(SMTP_HOST_NAME, SMTP_PORT, SMTP_FROM_ADDRESS, PASSWORD);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
我遇到了同样的问题,结果发现端口设置为26。
除此之外,作为良好做法,您应该使用:
Properties properties = new Properties();
和
Session session = Session.getInstance(properties);
您应该尝试修复these common mistakes以防止将来出现错误。