gpt4 book ai didi

java - 无法在java中使用yahoo发送邮件

转载 作者:行者123 更新时间:2023-12-02 02:26:09 24 4
gpt4 key购买 nike

错误:

调试:setDebug:JavaMail 版本 1.4ea 调试: getProvider() 返回 javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] 调试 SMTP:useEhlo true,useAuth true 调试 SMTP:尝试连接到主机“smtp.mail.yahoo.com”,端口 465,isSSL false javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.mail.yahoo.com,端口:465; 嵌套异常是: java.net.ConnectException:连接超时:连接 253 ******@yahoo.com 测试 ******@yahoo.com 亲爱的

    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at SendEmail.sendFromYahoo(SendEmail.java:137)
at SendEmail.main(SendEmail.java:50)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
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:232)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
... 5 more

我想在java中使用雅虎邮件发送邮件我的代码是

Properties props = System.getProperties();
String host = "smtp.mail.yahoo.com";
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", from);
props.put("mail.smtp.password", pass);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.port", "465");//587
props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props);
MimeMessage message = new MimeMessage(session);
session.setDebug(true);

try {
message.setFrom(new InternetAddress(from));
InternetAddress[] toAddress = new InternetAddress[to.length];

// To get the array of addresses
for( int i = 0; i < to.length; i++ ) {
toAddress[i] = new InternetAddress(to[i]);
}

for( int i = 0; i < toAddress.length; i++) {
message.addRecipient(Message.RecipientType.TO, toAddress[i]);
}

message.setSubject(subject);
message.setText(body);
Transport transport = session.getTransport("smtp");
transport.connect(host, from, pass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
System.out.println("Sent message successfully....");
}
catch (AddressException ae) {
ae.printStackTrace();
}
catch (MessagingException me) {
me.printStackTrace();
}

最佳答案

您应该能够使用以下程序发送电子邮件:

public class SendMail {
String host, port, emailid,username, password;
Properties props = System.getProperties();
Session l_session = null;

public SendMail() {
host = "smtp.mail.yahoo.com";
port = "465";
emailid = "...@yahoo.com";
username = "...";
password = "pwd";

emailSettings();
createSession();
sendMessage("...@yahoo.com", "xyz@gmail.com","Test subject","Test mail with some random text");
}

public void emailSettings() {
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "false");
props.put("mail.smtp.port", port);
}

public void createSession() {
l_session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
l_session.setDebug(true);
}

public boolean sendMessage(String emailFromUser, String toEmail, String subject, String messageText) {
try {
MimeMessage message = new MimeMessage(l_session);
emailid = emailFromUser;
message.setFrom(new InternetAddress(this.emailid));

message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
message.addRecipient(Message.RecipientType.BCC, new InternetAddress(toEmail));
message.setSubject(subject);
message.setContent(messageText, "text/html");

Transport.send(message);
System.out.println("An email has been sent");
} catch (MessagingException mex) {
mex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}

希望这有帮助!

关于java - 无法在java中使用yahoo发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47751113/

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