下面是应用程序的代码。我一直在尝试使用eclipse IDE来运行它。我还添加了所有必需的java邮件jar文件,即dsn.jar、imap.jar、mailapi.jar、pop3.jar、smtp.jar、mail.jar
。但会出现以下错误无法连接到SMTP主机:SMTP.gmail.com,port:587
。
没有防火墙阻止访问,因为ping smtp.gmail.com时会收到回复。我甚至这样试过:
package net.codejava.mail;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
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 PlainTextEmailSender {
public void sendPlainTextEmail(String host, String port,
final String userName, final String password, String toAddress,
String subject, String message) throws AddressException,
MessagingException {
// sets SMTP server properties
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", port);
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
// creates a new session with an authenticator
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
};
Session session = Session.getInstance(properties, auth);
// creates a new e-mail message
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(userName));
InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
msg.setRecipients(Message.RecipientType.TO, toAddresses);
msg.setSubject(subject);
msg.setSentDate(new Date());
// set plain text message
msg.setText(message);
// sends the e-mail
Transport.send(msg);
}
/**
* Test the send e-mail method
*
*/
public static void main(String[] args) {
// SMTP server information
String host = "smtp.gmail.com";
String port = "587";
String mailFrom = "user_name";
String password = "password";
// outgoing message information
String mailTo = "email_address";
String subject = "Hello my friend";
String message = "Hi guy, Hope you are doing well. Duke.";
PlainTextEmailSender mailer = new PlainTextEmailSender();
try {
mailer.sendPlainTextEmail(host, port, mailFrom, password, mailTo,
subject, message);
System.out.println("Email sent.");
} catch (Exception ex) {
System.out.println("Failed to sent email.");
ex.printStackTrace();
}
}
}
就像我说的,你的代码没有问题。如果有的话,只是为了做一些测试,试着删除身份验证部分,看看它是否起作用:
public void sendPlainTextEmail(String host, String port,
final String userName, final String password, String toAddress,
String subject, String message) throws AddressException,
MessagingException {
// sets SMTP server properties
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.port", port);
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
// *** BEGIN CHANGE
properties.put("mail.smtp.user", userName);
// creates a new session, no Authenticator (will connect() later)
Session session = Session.getDefaultInstance(properties);
// *** END CHANGE
// creates a new e-mail message
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(userName));
InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
msg.setRecipients(Message.RecipientType.TO, toAddresses);
msg.setSubject(subject);
msg.setSentDate(new Date());
// set plain text message
msg.setText(message);
// *** BEGIN CHANGE
// sends the e-mail
Transport t = session.getTransport("smtp");
t.connect(userName, password);
t.sendMessage(msg, msg.getAllRecipients());
t.close();
// *** END CHANGE
}
这就是我每天使用的从应用程序中发送几十封电子邮件的代码,并且100%保证可以工作--当然,只要smtp.gmail.com:587
是可访问的。
我是一个初学者,如果你能让我知道,我将不胜感激。
这是我用来发送电子邮件的代码: javax.mail.MessagingException:无法连接到SMTP主机:SMTP.gmail.com,端口:465; 嵌套异常为: java.net.connectException:连接被拒绝 在com.sun.mail.SMTP.smtpransport.openserver(smtpransport.java:1961) 在com.sun.mail
} 谁能告诉我,我的代码是不是错了,或者我遗漏了什么?以下是完整的错误输出。
在发送邮件时,我遇到了这个错误 java.lang.RuntimeException:javax.mail.SendFailedException:发送失败;嵌套异常为:类javax.mail.MessagingException:无法连接到SMTP主机:SMTP.gmail.com,端口:465,响应:-1 我的代码是:
我正在尝试发送电子邮件,但一直收到以下错误: 无法连接到SMTP主机:SMTP.gmail.com,端口:465,响应:-1 javax.mail.MessagingException:无法连接到SMTP主机:SMTP.gmail.com,端口:465,响应:-1在com.sun.mail.SMTP.smtptransport.openserver(smtptransport.java:2088)
我需要使用Gmail作为SMTP服务器从我的应用程序发送电子邮件。这是我的邮件连接器类,我在一个单独的属性文件中设置了值 属性: 然后我实现了一个邮件发送者类,名为“GroupEmail.class” 毕竟,我在需要触发要发送的电子邮件的地方调用了“GroupEmail.class”。 我在localhost使用Tomcat v8服务器,当应用程序工作时,我得到了以下异常。