使用javamail發送郵件(文本+附件)

java發動郵件其實很簡單,這是使用Javamail來實現,使用maven管理

1.導包:這兩個包缺一不可

        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>javax.mail-api</artifactId>
            <version>1.5.6</version>
        </dependency>

        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.5.6</version>
        </dependency>

2.如果不想用現成的郵箱,比如163,139等,可以自己搭建smtp郵件服務器。但是這裏使用163郵箱來實現,但163郵箱要開啓smtp(登陸郵箱設置就可以)


3.源代碼:需要的參數是:發送地址,開啓smtp的時候設置的密碼,smtp端口,目的地址,郵件的主題,郵件內容,附件的地址

public static void sendMsg(String fromAddress,String fromAddresspwd,String host,
                               String toAddress,String subject,String content,String filepath) throws Exception{
        // 用於連接郵件服務器的參數配置
        Properties props = new Properties();
        //發送郵件的服務器地址
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true");
        props.put("mail.transport.protocol","smtp");
        props.put("mail.debug", "true");
        //創建Session對象
        Session session =Session.getInstance(props);
        //創建出MimeMessage,郵件的消息對象
        MimeMessage message = new MimeMessage(session);
        //設置發件人
        Address fromAddr = new InternetAddress(fromAddress,"每日執法信息導出小助手");
        message.setFrom(fromAddr);

        //設置收件人
        Address toAddr=new InternetAddress(toAddress,"無敵小神童");
        message.setRecipient(RecipientType.TO, toAddr);

        //設置郵件的主題
        message.setSubject(subject,"UTF-8");

        //設置文本節點
        MimeBodyPart text=new MimeBodyPart();
        text.setContent(content,"text/html;charset=UTF-8");

        //創建附件節點
        MimeBodyPart attachment=new MimeBodyPart();
        DataHandler dataHandler=new DataHandler(new FileDataSource(filepath));// 讀取本地文件
        attachment.setDataHandler(dataHandler);// 將附件數據添加到“節點”
        attachment.setFileName(MimeUtility.encodeText(dataHandler.getName()));// 設置附件的文件名(需要編碼)

        //設置文本和圖片的關係
        MimeMultipart mimeMultipart=new MimeMultipart();
        mimeMultipart.addBodyPart(text);
        mimeMultipart.addBodyPart(attachment);
        mimeMultipart.setSubType("mixed");

        //設置郵件的正文
        message.setContent(mimeMultipart);
        //用於連接郵件服務器的參數配置
        message.setSentDate(new Date());
        message.saveChanges();//保存更新

        //根據 Session 獲取郵件傳輸對象
        Transport transport = session.getTransport("smtp");
        transport.connect(host,fromAddress,fromAddresspwd); //設置了郵件的發射地址
        //發送郵件到收件地址
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }

4.在程序入口調用即可。本代碼可以用作工具方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章