Отправка почты ошибка, javax.почта.MessagingException: не удалось подключиться к хосту SMTP: localhost, порт: 25;
вот мой код
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailSendClass {
public static void main (String [] args){
// Recipient's email ID needs to be mentioned.
String to = "abc82@gmail.com";
// Sender's email ID needs to be mentioned
String from = "xyz@gmail.com";
// Assuming you are sending email from localhost
String host = "localhost";
// Get system properties
Properties properties = System.getProperties();
// Setup mail server
properties.setProperty("mail.smtp.host", host);
// Get the default Session object.
Session session = Session.getDefaultInstance(properties);
try{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(from));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Set Subject: header field
message.setSubject("Thanks for registering on our website!");
// Now set the actual message
message.setText("Welcome To Job Portal !!!! Again Thanks ");
// Send message
Transport.send(message);
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
и я получаю эту ошибку каждый раз
javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at javax.mail.Transport.send0(Transport.java:190)
at javax.mail.Transport.send(Transport.java:120)
at MailSendClass.main(MailSendClass.java:58)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
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:284)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672)
... 7 more
BUILD SUCCESSFUL (total time: 3 seconds)
Я не получаю ошибку, почему это происходит. Пожалуйста, помогите мне в исправлении этой ошибки.
4 ответов
ошибки explainatory: javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
нет SMTP сервер на localhost, но вы можете настроить его здесь :
// Assuming you are sending email from localhost
String host = "localhost";
...
// Setup mail server
properties.setProperty("mail.smtp.host", host);
Итак, вы должны:
- либо настройте локальный SMTP-сервер в качестве ретранслятора в вашей локальной системе (Postfix или sendmail-это два хорошо известных сервера)
- настройки фиктивного сервера, который просто отслеживает почтовый запрос, но даже не пытается доставить почту (Python, как известно, имеет такие фиктивные серверы из коробки)
- или настройте приложение с сервером, который вам разрешено использовать-обратитесь к системному администратору в корпоративной среде или к провайдеру в индивидуальной. В любом случае, вам понадобится это даже для настройки истинного реле.
вы должны использовать бесплатный сервер Google SMTP в качестве теста.
mail.host=smtp.gmail.com
mail.username=//your gmail
mail.password=//your password
mail.defaultEncoding=UTF-8
mail.smtp.auth=true
mail.smtp.starttls.required=true
mail.smtp.starttls.enable=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
mail.smtp.port=465
mail.smtp.socketFactory.port=465
затем войдите в свой gmail и включите менее безопасные приложения.
вы должны посмотреть на эти две строки:
javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
Caused by: java.net.ConnectException: Connection refused: connect
ошибка: "на localhost в порту 25 ничего не прослушивается".
вы пытаетесь использовать localhost: 25 в качестве почтового сервера, но там нет сервера.
вот рабочее решение братан. это гарантировано!--1-->
1) Прежде всего откройте учетную запись gmail, с которой вы хотели отправить почту, как в вашем случае ""xyz@gmail.com"
2) откройте эту ссылку ниже https://support.google.com/accounts/answer/6010255?hl=en
3) нажмите "Перейти в раздел" менее безопасные приложения " в моей учетной записи."вариант
4) затем включите его
5) Вот именно (: