2013-01-21 35 views
11

Tôi đang gặp sự cố khi định cấu hình cài đặt SMTP để gửi thư bằng cách sử dụng javax.mail (1.4.4) thông qua Office365, vì vậy tôi nghĩ tôi sẽ đăng các thuộc tính ở đây cho người khác.Gửi javamail bằng Office365

Trả lời

11
private static Properties props; 
private static Session session; 
static { 
    props = new Properties(); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.port", "587"); 
    props.put("mail.smtp.host", "m.outlook.com"); 
    props.put("mail.smtp.auth", "true"); 
    session = Session.getInstance(props, new Authenticator() { 
     @Override 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication("office365 email address" 
        "office365 password"); 
     } 
    }); 

} 
+0

Tôi đang phải đối mặt với vấn đề tương tự có thể hài lòng giải thích giải pháp của bạn ?? ? –

+0

Vấn đề tôi đang phải đối mặt là thread của tôi đã bị mắc kẹt trước khi gửi thư, tôi đã thử nhiều giải pháp từ internet không phải của họ làm việc, tôi không nhận được bất kỳ ngoại lệ quá. Tôi không thể gửi thư, nó sẽ hữu ích nếu bạn chia sẻ kiến ​​thức của bạn .. :) cảm ơn –

+1

Đối với tôi, điều này chỉ làm việc sau khi tôi thay đổi '587' thành '" 587 "'. Nếu không, JavaMail đã cố kết nối qua cổng 25. – Glorfindel

0

Các lỗi duy nhất mà tôi đang nhận thấy trong mã của bạn là Host không chính xác

javaMailProperties.setProperty("mail.smtp.from", "[email protected]"); 
    javaMailProperties.setProperty("mail.smtp.user", "[email protected]"); 
    javaMailProperties.setProperty("mail.smtp.password","Password"); 
    javaMailProperties.setProperty("mail.smtp.host", "smtp.office365.com"); 
    javaMailProperties.setProperty("mail.smtp.port", "587"); 
    javaMailProperties.setProperty("mail.smtp.auth", "true"); 
    javaMailProperties.setProperty("mail.smtp.starttls.enable", "true"); 

Thay đổi các máy chủ, bạn sẽ có tất cả tốt.

4

Mã làm việc Ví dụ:

Email email = new SimpleEmail(); 

email.setHostName("smtp.office365.com"); 
email.setSmtpPort(587); 
email.setAuthenticator(new DefaultAuthenticator("[email protected]", "****")); 
email.setStartTLSEnabled(true); 
try { 
    email.setFrom("[email protected]"); 
    email.setSubject("Job Failure"); 
    email.setDebug(true); 
    email.setMsg("This is a test mail ... :-)"); 
    email.addTo("[email protected]"); 
    email.send(); 
} catch (EmailException e) { 
    e.printStackTrace(); 
} 
+0

Bạn có thể muốn chỉ định rằng điều này sử dụng [commons-email] (https://commons.apache.org/proper/commons-email/). – JBert

3

Và với mùa xuân-boot, bạn chỉ cần để thêm video này application.properties của bạn:

spring.mail.host = smtp.office365.com 
spring.mail.username = [email protected] 
spring.mail.password = s3cr3t 
spring.mail.port = 587 
spring.mail.properties.mail.smtp.auth = true 
spring.mail.properties.mail.smtp.starttls.enable = true 
Các vấn đề liên quan