1. 程式人生 > 實用技巧 >通過Java程式碼傳送OutLook郵件

通過Java程式碼傳送OutLook郵件

準備

我們想通過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("傳送失敗");
        }
    }