Java通過JavaMail發(fā)送郵件功能
更新時間:2022年08月11日 08:48:22 作者:熱水得加糖
這篇文章主要為大家詳細介紹了Java通過JavaMail發(fā)送郵件功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Java通過JavaMail發(fā)送郵件的具體代碼,供大家參考,具體內(nèi)容如下
這里我用的是SpringBoot項目
1、引入相關jar包
<!--java-email--> ? <dependency> ? ?<groupId>com.sun.mail</groupId> ? ?<artifactId>javax.mail</artifactId> ? ?<version>1.6.2</version> </dependency>
2、將QQ郵箱的POP3/SMTP服務打開(其他郵箱自行百度,個別郵箱跳過)
3、創(chuàng)建郵件發(fā)送屬性
- 郵件發(fā)送服務器:QQ郵箱:smtp.qq.com,其他郵箱服務器地址自行百度
- 16位授權(quán)碼:16位授權(quán)碼可有多個,個別郵箱可直接用密碼代替(本人用的免費的企業(yè)郵箱,可直接用密碼登錄)
Properties prop = new Properties(); //設置郵件服務器 prop.setProperty("mail.host", "smtp.qq.com"); // 郵件發(fā)送協(xié)議 prop.setProperty("mail.transport.protocol", "smtp"); // 需要驗證用戶名密碼 prop.setProperty("mail.smtp.auth", "true"); // 郵箱設置SSL加密 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); prop.put("mail.smtp.ssl.enable", "true"); prop.put("mail.smtp.ssl.socketFactory", sf); //1、創(chuàng)建定義整個應用程序所需的環(huán)境信息的 Session 對象 Session session = Session.getDefaultInstance(prop, new Authenticator() { ? ? ? ? ? ? @Override ? ? ? ? ? ? protected PasswordAuthentication getPasswordAuthentication() { ? ? ? ? ? ? ? ? //傳入發(fā)件人賬號和授權(quán)碼 ? ? ? ? ? ? ? ? return new PasswordAuthentication("1825508930@qq.com", "16位授權(quán)碼"); ? ? ? ? ? ? } ? ? ? ? }); ? ? ? ? //2、通過session獲取transport對象 ? ? ? ? Transport transport = session.getTransport(); ? ? ? ? //3、通過transport對象設置發(fā)件賬號和授權(quán)碼連接郵箱服務器 ? ? ? ? transport.connect("smtp.qq.com", "1825508930@qq.com", "16位授權(quán)碼");
4、設置郵件內(nèi)容
圖片
MimeBodyPart image = new MimeBodyPart(); DataHandler handler = new DataHandler(new FileDataSource("本地文件路徑")); image.setDataHandler(handler); //設置圖片id image.setContentID("test.jpg"); //準備文本 MimeBodyPart text = new MimeBodyPart(); //通過cid:圖片id設置文件路徑 text.setContent("<h1>測試圖片</h1><img src='cid:test.jpg' width='100' height='100'>", "text/html;charset=utf-8");
附件
MimeBodyPart appendix = new MimeBodyPart(); appendix.setDataHandler(new DataHandler(new FileDataSource("本地文件路徑"))); appendix.setFileName("test.txt");
將圖片附件存入郵件中并發(fā)送
//拼裝郵件正文 MimeMultipart mimeMultipart = new MimeMultipart(); //將設置的圖片放入郵箱 mimeMultipart.addBodyPart(image);? ?mimeMultipart.addBodyPart(text); //文本和圖片內(nèi)嵌 mimeMultipart.setSubType("related"); ? //將拼裝好的正文內(nèi)容設置為主體 MimeBodyPart contentText = new MimeBodyPart(); contentText.setContent(mimeMultipart); ? //拼接附件 MimeMultipart allFile = new MimeMultipart(); //附件 allFile.addBodyPart(appendix); //正文 allFile.addBodyPart(contentText); //正文和附件都存在郵件中,所有類型設置為mixed allFile.setSubType("mixed"); //放到Message消息中 mimeMessage.setContent(allFile); //保存修改 mimeMessage.saveChanges(); //發(fā)件人郵箱(必須)、別稱(可忽略) mimeMessage.setFrom(new InternetAddress("1825508930@qq.com", "別稱")); ? //5、發(fā)送郵件(如果需要群發(fā)的話,為了保護隱私就不推薦使用mimeMessage.addRecipients(),會將所有收件人一同展示出來,建議循環(huán)使用mimeMessage.setRecipients進行發(fā)送) //設置收件人 ?mimeMessage.setRecipients(Message.RecipientType.TO, "123456@qq.com"); //發(fā)送 transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients()); ?//6、關閉連接 transport.close(); log.info("郵件發(fā)送成功");
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- JavaMail實現(xiàn)發(fā)送郵件(QQ郵箱)
- JavaMail實現(xiàn)郵件發(fā)送機制
- JavaMail整合Spring實現(xiàn)郵件發(fā)送功能
- JavaMail實現(xiàn)簡單郵件發(fā)送
- 基于JavaMail實現(xiàn)簡單郵件發(fā)送
- Spring?Boot集成JavaMailSender發(fā)送郵件功能的實現(xiàn)
- JavaMail郵件發(fā)送機制詳解
- 基于JavaMail實現(xiàn)郵件發(fā)送
- JavaMail發(fā)送(帶圖片和附件)和接收郵件實現(xiàn)詳解(四)
- 利用JavaMail發(fā)送HTML模板郵件
相關文章
java的arraylist排序示例(arraylist用法)
這篇文章主要介紹了java的arraylist排序示例,學習一下arraylist的用法,需要的朋友可以參考下2014-03-03