我正在学习如何使用javamail API发送电子邮件,我已经创建了使用SMTP服务器发送简单电子邮件所需的属性和说明,我正在使用此代码:
Properties props=new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session= Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getpPasswordAuthentication(){
return new PasswordAuthentication("myemailadresse@gmail.com", "password");
}
});
try{
Message message=new MimeMessage(session);
message.setFrom(new InternetAddress("myemail"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recepientemailadresse"));
message.setSubject("the java mail test");
message.setText("Guess what brother the java mail is working correctly");
Transport.send(message);
JOptionPane.showMessageDialog(rootPane, "message sent");
}
catch(Exception e){
JOptionPane.showMessageDialog(rootPane, e);
e.printStackTrace();
}
和运行时发生异常,提到:
javax.mail.AuthenticationFailedException: failed to connect, no password specified?
at javax.mail.Service.connect(Service.java:329)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at transfer.Maitest.jButton1ActionPerformed(Maitest.java:96)
at transfer.Maitest.access$000(Maitest.java:20)
at transfer.Maitest$1.actionPerformed(Maitest.java:45)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
你能告诉我我想念的是什么吗?
答案 0 :(得分:1)
首先,请阅读此JavaMail FAQ entry about common mistakes。纠正后,请阅读此JavaMail FAQ entry that tells you how to connect to Gmail。如果它仍然无效,则此JavaMail FAQ entry about debugging会有所帮助。
答案 1 :(得分:0)
如果您的电子邮件服务器不需要身份验证而您不想提供密码(例如,测试环境),请尝试以下操作:
props.put("mail.smtp.auth", "false");