gpt4 book ai didi

java - java.mail 和套接字的问题

转载 作者:行者123 更新时间:2023-12-02 06:38:33 27 4
gpt4 key购买 nike

我试图从 java 发送邮件,但在我尝试的每种情况下都遇到相同的错误。我使用的是 Windows 8,之前我遇到了套接字问题,但我在 XP 虚拟机中运行此代码,它给我带来了同样的错误!我读到这可能是我的 jdk、防火墙、防病毒或网络问题,但我已经尝试过了,但没有解决方案。我希望有人能告诉这里发生了什么!我将把代码留在这里:

package mail;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

public class Mail
{ // SE DECLARAN LAS VARIABLES DE CORREO , DOMINIO, PUERTO Y PASS

private static final String SMTP_HOST_NAME = "smtp.gmail.trust";
private static final int SMTP_HOST_PORT = 587;
private static final String SMTP_AUTH_USER = "josevalverde93@gmail.com";
private static final String SMTP_AUTH_PWD = "password";

public static void main(String[] args) throws Exception {
new Mail().test();
}

public void test() throws Exception {
Properties props = new Properties();`
props.put("mail.transport.protocol", "smtps");`
props.put("mail.smtps.trust", SMTP_HOST_NAME);`
props.put("mail.smtps.auth", "true");`
props.put("mail.smtps.quitwait", "false");`
props.setProperty("mail.smtp.host", "stmp.gmail.com");`
props.setProperty("mail.smtp.starttls.enable", "true");`
props.setProperty("mail.smtp.port", "587");`
props.setProperty("mail.smtp.user", "josevalverde93@gmail.com");`
props.setProperty("mai.smtp.auth", "true");`
Session mailSession = Session.getDefaultInstance(props);`
mailSession.setDebug(true); Transport transport = mailSession.getTransport();`
MimeMessage message = new MimeMessage(mailSession); `
message.setSubject("Testing SMTP-SSL");`

// Aqui VA EL TITULO DEL EMAIL
message.setContent("Este correo ha sido enviado desde Netbeans con Java", "text/plain");

// Aqui VA EL CONTENIDO,,
message.addRecipient(Message.RecipientType.TO, new InternetAddress("andima9886@gmail.com"));

// DESTINARIO
transport.connect (SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD);
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
transport.close();
}

}

输出为:

DEBUG: setDebug: JavaMail version 1.5.0
DEBUG: getProvider() returning
javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.gmail.trust", port 587, isSSL true
Exception in thread "main" com.sun.mail.util.MailConnectException: Couldn't connect to
host, port: smtp.gmail.trust, 587; timeout -1;
nested exception is:
java.net.UnknownHostException: smtp.gmail.trust
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:345)
at mail.Mail.test(Mail.java:44)
at mail.Mail.main(Mail.java:17)
Caused by: java.net.UnknownHostException: smtp.gmail.trust
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:176)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:297)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:229)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
... 4 more
Java Result: 1

谢谢您,以及来自哥斯达黎加的问候。

最佳答案

问题可能是“smtp.gmail.trust”。您是否尝试过“smtp.gmail.com”?

要使用 Gmail SMTP 发送邮件,请尝试以下代码,它对我有用:

public void sendMail(final String senderEmailID, final String password, javax.mail.Address [] addresses) {
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 = null;
try {
session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(senderEmailID, password);
}
});
} catch (Exception e) {
e.printStackTrace();
return;
}

try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(senderEmailID));
message.setRecipients(Message.RecipientType.TO, addresses);

message.setSubject("Subject");

String messageBody = "<h1>Message</h1>";

message.setContent(messageBody.toString(), "text/html");
Transport.send(message);
} catch (Exception e) {
e.printStackTrace();
}
}

关于java - java.mail 和套接字的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19387884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com