我正在尝试从我的java发送电子邮件,但我无法连接到我的主机。这里是我的代码:
public class sendEmail implements Runnable{
@Override
public void run(){
try{
final String username = "user", password = "pass", from = "from@mail.com", to = "to@mail.com";
Properties props = new Properties();
props.setProperty("mail.smtp.user", username);
props.setProperty("mail.smtp.host", "mail.host.com");
props.setProperty("mail.smtp.ssl.enable", "true");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.debug", "true");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "false");
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(true);
Message msg = new MimeMessage(session);
try{
msg.setSubject("Test SMTP");
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
Transport transport = session.getTransport("smtp");
transport.connect("mail.itbuntuksemua.com", username, password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
System.out.println("Done");
}catch(MessagingException | NumberFormatException | HeadlessException ex){
ex.printStackTrace();
}
}catch(UnknownHostException | NumberFormatException ex){
ex.printStackTrace();
}
}
}
这里是我的SMTPAuthenticator()
代码:
private class SMTPAuthenticator extends javax.mail.Authenticator {
@Override
public PasswordAuthentication getPasswordAuthentication() {
String username = "user";
String password = "pass";
return new PasswordAuthentication(username, password);
}
}
这里又是我的报告错误:
有人能帮帮我吗?:(
您可能希望尝试下载证书,使用keytool安装它,然后将它们设置为系统变量。如下所示:
>
“详细信息”>“安全性”>“显示证书”>“详细信息”>“导出..”
。获取名称并选择文件类型example.der
。现在您有了带有keystore的文件,您必须将其添加到JVM$JAVA_HOME/jre/lib/security/cacerts
使用以下方法将example.der
文件导入cacerts
文件:
sudo keytool -import -alias example -keystore $JAVA_HOME/jre/lib/security/cacerts -file example.der
默认密钥存储区密码为“changeit
”
您可以查看使用此显示证书指纹的命令所做的更改。
keytool -list -keystore cacerts
如果这不能解决问题,请尝试添加这些java选项作为参数:
-Djavax.net.ssl.trustStore="$JAVA_HOME/jre/lib/security/cacerts"
-Djavax.net.ssl.trustStorePassword="changeit"
也可以将它们作为系统变量放在java代码中:
System.setProperty("javax.net.ssl.trustStore","/usr/lib/jvm/java-1.7.0-openjdk-amd64/jre/lib/security/cacerts");
System.setProperty("javax.net.ssl.trustStorePassword","changeit");
SMTP错误:无法连接到SMTP主机。无法发送消息。 邮件程序错误:SMTP错误:无法连接到SMTP主机。 我似乎找不到让PHPMailer在CentOS下工作的方法。邮件在XAMPP的Windows下工作正常,但我总是在Linux下遇到这个错误。 SMTP服务器是一个在端口25上侦听的Lotus Domino,CentOS机器根本没有防火墙,奇怪的是,即使是mail()也不能工作。它不返回任何内
问题内容: 以下是我发送邮件的代码: 但是当我运行代码时,它给了我以下异常。 当我ping到它时,它给我的答复没有任何问题。我在用 请帮我解决这个问题。 问题答案: 这是这两行让我感到困扰的问题: 并添加了这一行: 删除并添加以上代码行后,它可以正常工作。
当我从服务器发送电子邮件时,它会给我两个错误- SMTP错误:无法连接到SMTP主机。无法发送邮件。邮件错误:SMTP错误:无法连接到SMTP主机。 我在另一个关于堆栈溢出的答案上找到了很多提示,但都不起作用。我试过465/587/65号端口。如果我设置端口587,下面的代码在本地系统上也能正常工作。但在服务器中,它不起作用。
我正在处理一封使用phpmailer类的Web邮件。问题是我收到错误“SMTP错误:无法连接到SMTP主机。邮件未发送PHP邮件错误:SMTP错误:无法连接到SMTP主机。” 我的代码是: 有人想让我知道我错在哪里,我需要你对这个问题的关注。
我已经开发了一个web应用程序(JSF、Spring、jboss AS7.0.13),用于使用JavaMail1.4和Domino Lotus9.0.1作为邮件服务器通过smtp发送邮件。 已经做了什么: null 发送方法源代码: 在一个简单的java应用程序中使用相同的方法我可以毫无问题地发送邮件,但是,当尝试从我的web应用程序发送邮件时,当然再次使用相同的方法源代码时,我得到了一个异常:
这是我用来发送电子邮件的代码: javax.mail.MessagingException:无法连接到SMTP主机:SMTP.gmail.com,端口:465; 嵌套异常为: java.net.connectException:连接被拒绝 在com.sun.mail.SMTP.smtpransport.openserver(smtpransport.java:1961) 在com.sun.mail