[英]Javamail doesn't send a mail
我正在開發Java應用程序,並且正在使用Javamail發送郵件。 我的代碼如下:
Properties props = new Properties();
props.put("mail.smtp.host", "diana.cartif.es");
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 getPasswordAuthentication() {
return new PasswordAuthentication("alerts","pass");
}
});
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("alerts@cartif.es"));
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("campus21@cartif.es"));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler," +"\n\n No spam to my email, please!");
Transport.send(message);
但是,當我執行此代碼時,它將引發異常:
javax.mail.MessagingException: Could not connect to SMTP host: diana.cartif.es, port: 465, response: -1
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1960)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:317)
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 com.cartif.data.MainConnection.getFTPConnection(MainConnection.java:106)
at com.cartif.main.Main.connectToServer(Main.java:72)
at com.cartif.main.Main.main(Main.java:60)
連接的數據正確,因為我在郵件服務器中檢查了它。 有人可以幫我嗎?
謝謝!
嘗試這樣的事情:
String d_email = "email",
d_password = "pass";
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.server");
props.put("mail.smtp.user", d_email);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", port);
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
擺脫socketFactory *屬性。 在大多數情況下,不再需要它們並添加
props.put("mail.smtp.ssl.enable", true);
嘗試致電:
session.setDebug(true);
看看是否有任何幫助。
如果您使用的是自簽名證書,請訪問: http : //www.oracle.com/technetwork/java/javamail145sslnotes-1562622.html
最后,我使用以下屬性解決了這個問題:
props.setProperty("mail.smtp.host", "smpt.host");
props.setProperty("mail.smtp.starttls.enable", "false");
props.setProperty("mail.smtp.port","25");
props.setProperty("mail.smtp.user", "alerts");
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("mail1@mail.es"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("mail2@mail.es"));
message.setSubject("Subject");
message.setText("Text");
Transport t = session.getTransport("smtp");
t.connect("user","pass");
t.sendMessage(message,message.getAllRecipients());
t.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.