1. 程式人生 > >Java 使用mail.jar包發郵件

Java 使用mail.jar包發郵件

首先匯入mail.jar包並buildpath。
這個包主要用到的是 javax.mail.internet.*和 javax.mail.*的內容。
寫一個連線qq的伺服器(SMTP方式)的發郵件程式:

寫一個靜態方法sendEmail(){};
第一步:寫一個properties並設定各項值等下要用:

        Properties props = System.getProperties();  
        // 建立信件伺服器  
        props.put("mail.smtp.host", "smtp.qq.com");//主機host,跟郵件傳送者必須一致
        props.put
("mail.smtp.auth", "true"); // 通過驗證 props.put("mail.smtp.port", "465");//加密服務埠465 props.put("mail.transport.protocol", "smtp");//方式為smtp props.put("mail.smtp.ssl.enable", "true");//加密 //props.put("mail.debug", "true");//沒什麼用

建立一個會話把屬性properties放進去:

Session session = Session.getDefaultInstance(props, null);  

建立一個訊息把會話放進去:

MimeMessage msg = new MimeMessage(session);

然後把暱稱轉編碼加上傳送郵箱,設定from:

 msg.setFrom(new InternetAddress(MimeUtility.encodeText("傳送人:") + "<266****[email protected]>"));  

新建接受方的地址to:

InternetAddress[] address = new InternetAddress[]{"944*9@qq.com","689*8@qq.com}

將地址新增到指定的接受型別:

msg.addRecipients
(Message.RecipientType.TO, address);

設定郵件主題subject:

msg.setSubject(subject);  

然後設定mime型別的Multipart部分,也就是正文:
先新建:

Multipart mp = new MimeMultipart(); 

然後新增附件,多個附件重複多次:

MimeBodyPart mbp = new MimeBodyPart();  
     // 得到資料來源  
FileDataSource fds = new FileDataSource(filename);  
   // 得到附件本身並至入BodyPart  
mbp.setDataHandler(new DataHandler(fds));  
  // 得到檔名同樣至入BodyPart  
mbp.setFileName(fds.getName());  
// 把這個mbp附件add進去  
mp.addBodyPart(mbp); 

同理,新增文字:

         MimeBodyPart mbp = new MimeBodyPart();  
         mbp.setText(body);
         mp.addBodyPart(mbp);

然後設定mp為訊息正文:

 msg.setContent(mp);  

如果沒有附件直接設定訊息正文即可:

msg.setText("正文");

設定訊息頭的日期,更新所有並儲存:

 msg.setSentDate(new Date());  
 msg.saveChanges();  

最後,連線併發送,關閉連線:

Transport transport = session.getTransport("smtp");  
 transport.connect(username, password);
 ransport.sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));  
 transport.close();  

完畢!