Java 使用mail.jar包發郵件
阿新 • • 發佈:2019-02-20
首先匯入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();
完畢!