通過Java程式碼傳送OutLook郵件
阿新 • • 發佈:2020-11-23
準備
我們想通過Java程式碼實現傳送OutLook郵件,必須準備以下材料:
- OutLook郵箱
- 目標郵箱
檢視OutLook郵箱資訊
開啟OutLook郵箱,在Settings中搜索或找到SMTP:
開啟以下介面,拿到我們想要的資料(ServerName 以及 Port),如圖:
JAVA專案
使用Maven或者建立一個普通專案,選擇匯入Maven依賴或匯入jar包,我這裡使用的是Maven建立的Java專案,所以我匯入了以下依賴:
<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency>
編寫傳送程式碼
複製或編寫以下程式碼,理解以下程式碼並不困難,我幾乎標註了每一行程式碼:
public static boolean SendEmail(String sender,String password,String host,String port,String receiver) { try{ Properties props = new Properties(); // 開啟debug除錯 props.setProperty("mail.debug", "true"); //false // 傳送伺服器需要身份驗證 props.setProperty("mail.smtp.auth", "true"); // 設定郵件伺服器主機名 props.setProperty("mail.host", host); // 傳送郵件協議名稱 這裡使用的是smtp協議 props.setProperty("mail.transport.protocol", "smtp"); // 服務埠號 props.setProperty("mail.smtp.port", port); props.put("mail.smtp.starttls.enable", "true"); // 設定環境資訊 Session session = Session.getInstance(props); // 建立郵件物件 MimeMessage msg = new MimeMessage(session); // 設定發件人 msg.setFrom(new InternetAddress(sender)); // 設定收件人 msg.addRecipient(Message.RecipientType.TO, new InternetAddress(receiver)); // 設定郵件主題 msg.setSubject("this is subject"); // 設定郵件內容 Multipart multipart = new MimeMultipart(); MimeBodyPart textPart = new MimeBodyPart(); //傳送郵件的文字內容 textPart.setText("this is the text"); multipart.addBodyPart(textPart); // 新增附件 MimeBodyPart attachPart = new MimeBodyPart(); //可以選擇傳送檔案... //DataSource source = new FileDataSource("C:\\Users\\36268\\Desktop\\WorkSpace\\MyApp\\Program.cs"); //attachPart.setDataHandler(new DataHandler(source)); //設定檔名 //attachPart.setFileName("Program.cs"); multipart.addBodyPart(attachPart); msg.setContent(multipart); Transport transport = session.getTransport(); // 連線郵件伺服器 transport.connect(sender, password); // 傳送郵件 transport.sendMessage(msg, new Address[]{new InternetAddress(receiver)}); // 關閉連線 transport.close(); return true; }catch( Exception e ){ e.printStackTrace(); return false; } }
執行方法
我這裡直接使用main方法直接運行了(為了除錯方便和更好的理解),如果是具體業務,你應該對這些程式碼包括引數進行封裝:
public static void main(String[] args) { String sender = "[email protected]"; String password = ""; //填寫你的outlook帳戶的密碼 // 收件人郵箱地址 String receiver = "[email protected]"; // office365 郵箱伺服器地址及埠號 //這個就是之前的Server Name,注意:你使用的Outlook應用可能使用了不同的伺服器,根據自己剛才拿到的地址為準 String host = "smtp.office365.com"; String port = "587"; //這個就是拿到的port boolean b = SendEmail(sender, password, host, port, receiver); if(b) { System.out.println("傳送成功"); }else { System.out.println("傳送失敗"); } }