Java邮件有连接错误
我尝试使用java应用程序发送电子邮件,但它总是返回连接错误。因此,我的代码如下所示:Java邮件有连接错误,java,smtp,jakarta-mail,Java,Smtp,Jakarta Mail,我尝试使用java应用程序发送电子邮件,但它总是返回连接错误。因此,我的代码如下所示: import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendMail { public static void main(String [] args) { String to = "something@gmail.com";
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendMail {
public static void main(String [] args) {
String to = "something@gmail.com";
String from = "fromsomeone@gmail.com";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("mail.user", "fromsomeone");
properties.setProperty("mail.password", "passwordForSomeone");
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("subject typed");
message.setText("This is actual message which is just some lines");
Transport.send(message);
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
当然,我提供了有效的信息(使用我的gmail帐户)。这就是我得到的错误:
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1;
nested exception is:
java.net.ConnectException: Connection refused (Connection refused)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2118)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:712)
at javax.mail.Service.connect(Service.java:366)
at javax.mail.Service.connect(Service.java:246)
at javax.mail.Service.connect(Service.java:195)
at javax.mail.Transport.send0(Transport.java:254)
at javax.mail.Transport.send(Transport.java:124)
at email.SendMail.main(SendMail.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:331)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2084)
... 12 more
谁能帮我一下,我的代码怎么了?谢谢大家! 你能试着改变一下吗:
properties.setProperty("mail.smtp.host", host);
致:
这将有助于您通过gmail帐户发送邮件
public class MailMan {
Session session = null;
public MailMan() {
if (session == null) {
init();
}
}
public void init() {
Properties props = new Properties();
props.put("mail.smtp.host", "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.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("EMAIL", "PASSWORD");
}
});
if (session != null) {
System.out.println("[OK]");
} else {
System.out.println("[NOK]");
}
}
public void sendMail() {
if (session == null) {
System.exit(0);
}
try {
String messageText = "";
Message message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress("no-reply", "No Reply"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
message.setReplyTo(InternetAddress.parse("no-reply"));
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse("to_email"));
message.setSubject("TEST");
message.setText(messageText);
Transport.send(message);
System.out.println("[OK]");
} catch (MessagingException e) {
e.printStackTrace();
System.out.println("Not Sent...");
}
}
}
和主要班级
public class SendMail {
public static void main(String[] args) {
MailMan ma = new MailMan();
ma.sendMail();
}
}
毕竟,你应该打开“访问不太安全的应用程序”.您能检查一下您的本地主机上运行的SMTP服务器还是接受本地主机连接的SMTP服务器吗?我已经在cmd行中检查过了:
TELNET MAIL.THEIRDOMAIN.COM 25 Trying 141.8.225.226…
但我没有得到任何响应TELNET:connect to address 141.8.225.226:Operation timeout TELNET:Unable connect到远程主机
SMTP服务器是否正在运行或25端口被某种方式阻止?这给了我一个错误:com.sun.mail.SMTP.SMTPSendFailedException:530 5.7.0必须首先发出STARTTLS命令。d8sm19145269wmi.21-gsmtp
public class SendMail {
public static void main(String[] args) {
MailMan ma = new MailMan();
ma.sendMail();
}
}