gpt4 book ai didi

java - 通过 SMTP 发送电子邮件时出错

转载 作者:搜寻专家 更新时间:2023-10-31 20:11:07 24 4
gpt4 key购买 nike

我正在尝试使用 gmail 作为 SMTP 通过 Java 代码发送电子邮件。但是出现如下异常。你能告诉我为什么找不到 gmail 主机吗?我在办公室网络中工作,不确定是否有防火墙阻止它发送。如果是,出路在哪里?

Exception in thread "main" com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 586; timeout -1;
nested exception is:
java.net.UnknownHostException: smtp.gmail.com
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2053)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
at javax.mail.Service.connect(Service.java:364)
at javax.mail.Service.connect(Service.java:245)
at mail.JavaEmail.sendEmail(JavaEmail.java:72)
at mail.JavaEmail.main(JavaEmail.java:22)
Caused by: java.net.UnknownHostException: smtp.gmail.com

Java 源代码:

package mail;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class JavaEmail
{
Session mailSession;

public static void main(String args[]) throws AddressException, MessagingException
{
JavaEmail javaEmail = new JavaEmail();
javaEmail.setMailServerProperties();
javaEmail.draftEmailMessage();
javaEmail.sendEmail();
}

private void setMailServerProperties()
{
Properties emailProperties = System.getProperties();
emailProperties.put("mail.smtp.port", "586");
emailProperties.put("mail.smtp.auth", "true");
emailProperties.put("mail.smtp.starttls.enable", "true");
mailSession = Session.getDefaultInstance(emailProperties, null);
}

private MimeMessage draftEmailMessage() throws AddressException, MessagingException
{
String[] toEmails = { "to-mail@gmail.com" };
String emailSubject = "Test email subject";
String emailBody = "This is an email sent by JAVA Code";
MimeMessage emailMessage = new MimeMessage(mailSession);
/**
* Set the mail recipients
* */
for (int i = 0; i < toEmails.length; i++)
{
emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails[i]));
}
emailMessage.setSubject(emailSubject);
/**
* If sending HTML mail
* */
emailMessage.setContent(emailBody, "text/html");
/**
* If sending only text mail
* */
//emailMessage.setText(emailBody);// for a text email
return emailMessage;
}

private void sendEmail() throws AddressException, MessagingException
{
/**
* Sender's credentials
* */
String fromUser = "from-user@gmail.com";
String fromUserEmailPassword = "*****";

String emailHost = "smtp.gmail.com";
Transport transport = mailSession.getTransport("smtp");
transport.connect(emailHost, fromUser, fromUserEmailPassword);
/**
* Draft the message
* */
MimeMessage emailMessage = draftEmailMessage();
/**
* Send the mail
* */
transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
transport.close();
System.out.println("Email sent successfully.");
}
}

最佳答案

您连接到错误的端口。 Google 的 TLS SMTP 服务器是 587。您可以在此处查看更多相关信息:http://email.about.com/od/accessinggmail/f/Gmail_SMTP_Settings.htm

关于java - 通过 SMTP 发送电子邮件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27614793/

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