我目前正在研究一个涉及创建一个.jar文件的项目。下面是要实现的,我应该出口/阅读朋友的注册表的路径,一旦完成,我应该通过电子邮件得到结果。整个概念是在创建jar文件,一旦它被点击,我通过电子邮件得到结果,因为我实际上是通过电子邮件发送的。通过Java发送电子邮件 - javax.mail.MessagingException:无法连接到SMTP主机:localhost,port:587;
(我希望这是有道理的)
因此,首先,我结合下面的代码实际上读取注册表并显示键(我从受欢迎的岗位上进行读/写注册表栈溢出了它)所以阅读过程工作正常,现在我的问题是与电子邮件代码,
(我不太确定谁是这个代码的原始所有者,但充分的功劳去了他) 我试图让这个电子邮件代码的基本概念工作,以便我可以继续工作发送我的jar文件作为附件,并以某种方式将其链接到我的代码,当用户单击jar文件时,注册表结果将是电子邮件回到我身边。
import java.util.Properties;
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 MailCode {
public static void main(String[] args) throws Exception {
final String smtp_host = "smtp.gmail.com";
final String smtp_username = "[email protected]";
final String smtp_password = "password";
final String smtp_connection = "TLS"; // Use 'TLS' or 'SSL' connection
final String toEmail="[email protected]";
final String fromEmail="**@gmail.com";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
if (smtp_connection.equals("TLS")) {
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", "587");
} else{
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.port", "465");
}
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(smtp_username, smtp_password);
}
});
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(fromEmail, "NoReply"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress(toEmail, "Mr. Recipient"));
msg.setSubject("Welcome To JavaMail API");
msg.setText("JavaMail API Test - Sending email example through remote smtp server");
Transport.send(msg);
System.out.println("Email sent successfully...");
} catch (AddressException e) {
throw new RuntimeException(e);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
这是错误消息我得到:
Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 587;
nested exception is:
java.net.SocketException: Permission denied: connect
你是否字面上试图执行该代码?你知道它在做什么吗?为了记录,它尝试以“[email protected]”作为用户访问Gmail的邮件服务器,并以“password”作为密码。我怀疑[email protected]是你真正的Gmail地址。即使是这样,我怀疑你的密码是“密码”。如果是这样,你最好现在改变它。 – 2014-09-28 16:59:27
@JBNizet是我知道这段代码试图做什么,现在既不是我的真实密码也不是电子邮件,我把它放在证明用户名是电子邮件地址应该插入的地方,“密码”是真正的密码应插入 – Scarl 2014-09-29 03:24:26
你可以尝试将SMTP主机更改为smtp.googlemail.com吗? – Rorschach 2014-09-29 03:54:58