成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java 基于Jakarta Mail實現收發郵件

瀏覽:72日期:2022-08-13 17:31:18

Jakarta Mail API提供了一個獨立于平臺和協議的框架來構建郵件,完成郵件接收與發送功能。它也包含在Java EE平臺中,也可以和Java SE平臺一起使用。

Jakarta Mail的前生是JavaMail。JavaMail最后一個版本是于2018年8月發布,已經停止更新。新項目應該使用Jakarta Mail。

現在很多郵箱默認關閉smtp,pop3,imap服務,需要在設置中手動開啟。

Java 基于Jakarta Mail實現收發郵件

如果郵箱是使用授權碼,則需要生成授權碼(代替下文中密碼),這種方式更安全。

依賴

注意Jakarta Mail引用的包名與JavaMail不同,我寫demo時用的是2.0.0版。

<dependency> <groupId>com.sun.mail</groupId> <artifactId>jakarta.mail</artifactId> <version>{version}</version></dependency>

所有jar清單:

Java 基于Jakarta Mail實現收發郵件

最新版本包含了對Android的支持,可參考Jakarta Mail for Android

發送郵件

使用smtp協議接收,本文以QQ郵箱為例。

發送普通文本郵件

MailObject mailObj = new MailObject();mailObj.setFrom('engr-z@qq.com');mailObj.setTo(new String[]{'post@engr-z.com'});mailObj.setSubject('JavaMail 2.0');mailObj.setFormat(MailObject.EmailFormat.TEXT);mailObj.setBody('Java 收發郵件 (Jakarta Mail)');// smtp配置,可保存到properties文件,讀取Properties props = new Properties();props.put('mail.smtp.host', 'smtp.qq.com');props.put('mail.smtp.port', 465);props.put('mail.smtp.ssl', true);// 需要認證props.put('mail.smtp.auth', true);props.put('mail.smtp.user', 'engr-z@qq.com');props.put('mail.smtp.pass', '******');// 使用sslprops.put('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');//props.put('mail.smtp.socketFactory.fallback', false);//props.put('mail.smtp.socketFactory.port', mailConfig.getPort());// 創建會話Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() {if (Boolean.valueOf(props.getProperty('mail.smtp.auth'))) { // 需要認證 PasswordAuthentication auth = new PasswordAuthentication(props.getProperty('mail.smtp.user'), props.getProperty('mail.smtp.pass')); return auth;}return super.getPasswordAuthentication(); }});// 構建郵件消息MimeMessage msg = new MimeMessage(session);msg.setFrom(new InternetAddress(mailObj.getFrom()));InternetAddress[] address = new InternetAddress[mailObj.getTo().length];for (int i = 0, j = mailObj.getTo().length; i < j; i++) { address[i] = new InternetAddress(mailObj.getTo()[i]);}// 可以用msg.setRecipients方法增加多個接收人,指定接收人類型// Message.RecipientType.CC 抄送// Message.RecipientType.BCC 密送msg.setRecipients(Message.RecipientType.TO, address);msg.setSubject(mailObj.getSubject());if (MailObject.EmailFormat.HTML.equals(mailObj.getFormat())) { // html格式 msg.setContent(mailObj.getBody(), 'text/html;charset=utf-8');} else { msg.setText(mailObj.getBody());}msg.setSentDate(new Date());// 發送郵件Transport.send(msg);

發送帶附件的郵件

MailObject mailObj = new MailObject();mailObj.setFrom('engr-z@qq.com');mailObj.setTo(new String[]{'post@engr-z.com'});mailObj.setSubject('JavaMail 2.0');mailObj.setFormat(MailObject.EmailFormat.TEXT);mailObj.setBody('Java 收發郵件 (Jakarta Mail)');// smtp配置,可保存到properties文件,讀取Properties props = new Properties();props.put('mail.smtp.host', 'smtp.qq.com');props.put('mail.smtp.port', 465);props.put('mail.smtp.ssl', true);// 需要認證props.put('mail.smtp.auth', true);props.put('mail.smtp.user', 'engr-z@qq.com');props.put('mail.smtp.pass', '******');// 使用sslprops.put('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');//props.put('mail.smtp.socketFactory.fallback', false);//props.put('mail.smtp.socketFactory.port', mailConfig.getPort());// 創建會話Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() {if (Boolean.valueOf(props.getProperty('mail.smtp.auth'))) { // 需要認證 PasswordAuthentication auth = new PasswordAuthentication(props.getProperty('mail.smtp.user'), props.getProperty('mail.smtp.pass')); return auth;}return super.getPasswordAuthentication(); }});// 構建郵件消息MimeMessage msg = new MimeMessage(session);msg.setFrom(new InternetAddress(mailObj.getFrom()));InternetAddress[] address = new InternetAddress[mailObj.getTo().length];for (int i = 0, j = mailObj.getTo().length; i < j; i++) { address[i] = new InternetAddress(mailObj.getTo()[i]);}// 可以用msg.setRecipients方法增加多個接收人,指定接收人類型// Message.RecipientType.CC 抄送// Message.RecipientType.BCC 密送msg.setRecipients(Message.RecipientType.TO, address);msg.setSubject(mailObj.getSubject());Multipart mp = new MimeMultipart();// 郵件內容MimeBodyPart body = new MimeBodyPart();if (MailObject.EmailFormat.HTML.equals(mailObj.getFormat())) { // html格式 body.setContent(mailObj.getBody(), 'text/html;charset=utf-8');} else { body.setText(mailObj.getBody());}mp.addBodyPart(body);// 附件for (File file : mailObj.getFiles()) { MimeBodyPart attachment = new MimeBodyPart(); attachment.attachFile(file); mp.addBodyPart(attachment);}msg.setContent(mp);msg.setSentDate(new Date());// 發送郵件Transport.send(msg);

代碼中MailObj是我創建的MailObject對象,MailObject封裝了郵件相關的信息:

/** * @author Engr-Z * @since 2021/3/3 */@Datapublic class MailObject { enum EmailFormat {TEXT, HTML } /** * 發件人 */ private String from; /** * 收件人 */ private String[] to; /** * 抄送人 */ private String[] cc; /** * 密送人 */ private String[] bcc; /** * 郵件標題 */ private String subject; /** * 郵件內容 */ private String body; /** * 郵件格式 */ private EmailFormat format; /** * 附件 */ private File[] files;}接收郵件

接收郵件常用的協議有pop3,imap和exchange。exchange是微軟的郵箱協議,Jakarta Mail暫不支持。

使用pop3協議

// pop3配置,可保存到properties文件,讀取Properties props = new Properties();props.put('mail.pop3.host', 'pop.qq.com');props.put('mail.pop3.port', 995);props.put('mail.pop3.ssl', true);// 需要認證props.put('mail.pop3.auth', true);props.put('mail.pop3.user', 'post@engr-z.com');props.put('mail.pop3.pass', '******');// 使用sslprops.put('mail.pop3.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');//props.put('mail.pop3.socketFactory.fallback', false);//props.put('mail.pop3.socketFactory.port', mailConfig.getPort());Session session = Session.getDefaultInstance(props);Store store = session.getStore(mailConfig.getProtocol().value);if (Boolean.valueOf(props.getProperty('mail.pop3.auth'))) { // 需要認證 store.connect(mailConfig.getHost(), mailConfig.getPort(), props.getProperty('mail.pop3.user'), props.getProperty('mail.pop3.pass'));} else { store.connect();}// 獲取收件箱 store.getDefaultForlderFolder mbox = store.getFolder('INBOX');// INBOXmbox.open(Folder.READ_ONLY);System.out.println(mbox.getName());int msgCount = mbox.getMessageCount();System.out.println('郵件總數:' + msgCount);// 取最新的郵件Message msg = mbox.getMessage(msgCount);System.out.println('郵件主題:' + msg.getSubject());System.out.println('發件人:' + msg.getFrom());// 返回數組System.out.println('收件人:' + msg.getRecipients(Message.RecipientType.TO));// 沒有為nullSystem.out.println('抄送人:' + msg.getRecipients(Message.RecipientType.CC));// 沒有為nullSystem.out.println('密送人:' + msg.getRecipients(Message.RecipientType.BCC));// MimeMultipart 對像System.out.println('郵件內容:' + msg.getContent());

使用imap協議

只需把上面props配置key改為imap即可,QQ郵件imap端口是 993:

// imap配置,可保存到properties文件,讀取Properties props = new Properties();props.put('mail.imap.host', 'imap.qq.com');props.put('mail.imap.port', 993);props.put('mail.imap.ssl', true);// 需要認證props.put('mail.imap.auth', true);props.put('mail.imap.user', 'post@engr-z.com');props.put('mail.imap.pass', '******');// 使用sslprops.put('mail.imap.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');//props.put('mail.imap.socketFactory.fallback', false);//props.put('mail.imap.socketFactory.port', mailConfig.getPort());Session session = Session.getDefaultInstance(props);Store store = session.getStore(mailConfig.getProtocol().value);if (Boolean.valueOf(props.getProperty('mail.imap.auth'))) { // 需要認證 store.connect(mailConfig.getHost(), mailConfig.getPort(), props.getProperty('mail.imap.user'), props.getProperty('mail.imap.pass'));} else { store.connect();}// 以下操作與pop3相同......完

開發中我們還可以使用Apache Commons Email收發郵件,它的API使用起來更簡單。Spring Boot也有郵件模塊。有興趣可以到官網了解。

Jakrata項目地址:eclipse-ee4j.github.io/mail/

以上就是Java 基于Jakarta Mail實現收發郵件的詳細內容,更多關于Java 收發郵件的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美一区二区三区四区高清| 国产一区二区在线观看免费播放| 欧美午夜视频| 精品国产免费一区二区三区四区| 国产精品资源在线观看| 欧美日韩午夜精品| 美国欧美日韩国产在线播放| 在线观看不卡一区| 麻豆成人综合网| 欧美日韩成人高清| 捆绑紧缚一区二区三区视频| 色婷婷久久99综合精品jk白丝 | 天天色综合天天| 亚洲伦伦在线| 亚洲女同ⅹxx女同tv| 99精品热6080yy久久| 亚洲黄色av一区| 国产伦精品一区二区三区| 午夜精品久久久久久久久| 老司机精品视频网站| 美女精品自拍一二三四| 精品视频在线看| 亚洲一级二级在线| 91极品视觉盛宴| 激情图区综合网| 日韩一卡二卡三卡国产欧美| 成人黄色国产精品网站大全在线免费观看 | 99精品视频一区二区三区| 亚洲精品在线免费观看视频| 99久久99久久免费精品蜜臀| 久久久99久久| 亚洲免费精品| 日本午夜精品一区二区三区电影| 欧洲一区二区三区免费视频| 国产美女精品一区二区三区| 久久先锋影音av鲁色资源| 欧美三级第一页| 一区二区三区中文字幕电影 | 色哟哟一区二区| 狠狠网亚洲精品| 精品国产一区二区三区忘忧草| 欧美区国产区| 亚洲国产日韩综合久久精品| 欧美日韩一区二区三区在线看| 国产a区久久久| 中文字幕乱码一区二区免费| 最新国产拍偷乱拍精品| 日韩国产精品大片| 日韩欧美中文一区| 午夜欧美视频| 亚洲黄色免费网站| 一本大道综合伊人精品热热| 国产**成人网毛片九色 | 欧亚一区二区三区| 高清久久久久久| 欧美高清在线一区二区| 一区在线观看| 日韩va欧美va亚洲va久久| 91精品福利在线一区二区三区| 国产精品一二三| 国产精品久久久99| 在线免费观看不卡av| 99久久久久久99| 亚洲国产成人va在线观看天堂| 欧美剧情片在线观看| 欧美精品一区二区三区在线看午夜| 一区二区三区 在线观看视频| 欧美日韩免费高清一区色橹橹| 国产xxx精品视频大全| 中文字幕一区二区视频| 在线免费观看一区| 91同城在线观看| 午夜亚洲福利老司机| 精品欧美久久久| 先锋亚洲精品| 国产成人av一区二区三区在线| 国产精品理论在线观看| 亚洲一区在线电影| 中文字幕在线不卡一区| 一区二区在线观看av| 麻豆精品视频在线观看免费| 国产精品乡下勾搭老头1| 蜜臀精品久久久久久蜜臀| 国产精品乱码一区二区三区软件| 久久精品夜色噜噜亚洲a∨| 日韩一区二区三区视频| 91精品国产乱码| 欧美r级在线观看| 午夜伦理一区二区| 国产98色在线|日韩| 亚洲国产精品影院| 视频在线观看国产精品| 色综合久久中文综合久久牛| 中文字幕一区二区在线观看 | 欧美日本在线一区| 激情国产一区| 国产不卡在线视频| 国产精品美女久久久久aⅴ国产馆| 在线观看不卡视频| 国产婷婷一区二区| 成人午夜视频在线观看| 影音先锋久久精品| 日韩午夜电影av| 国产精品一区在线| 国产精品一区二区久久精品爱涩| 久久一夜天堂av一区二区三区| 一本一道久久综合狠狠老精东影业 | 一本色道久久综合亚洲91| 91在线播放网址| 美脚の诱脚舐め脚责91 | 成人精品视频一区二区三区| 玉足女爽爽91| 久久婷婷国产综合国色天香| 日本韩国欧美在线| 欧美私人啪啪vps| 经典一区二区三区| 亚洲尤物在线视频观看| 国产欧美日韩视频一区二区| 欧美视频一区二区在线观看| 国产精品一国产精品k频道56| 99精品在线免费| 激情综合网激情| 午夜日韩在线观看| 亚洲欧洲综合另类在线| 久久久久国产免费免费| 欧美电影一区二区三区| 久久午夜精品| 9久re热视频在线精品| 91麻豆swag| 国产麻豆日韩欧美久久| 日韩成人免费看| 亚洲色图一区二区三区| 久久综合久久综合亚洲| 3d成人h动漫网站入口| 久久一区免费| 日韩一区二区久久| 奇米精品一区二区三区在线观看 | 在线播放日韩导航| 亚洲欧美久久久| 99久久精品国产毛片| 国模冰冰炮一区二区| 婷婷成人激情在线网| 一区二区三区在线视频免费观看| 久久久91精品国产一区二区精品 | 欧美高清在线精品一区| 欧美一区二区三区四区视频| 在线免费观看不卡av| 国产一区二区高清不卡| 91美女福利视频| 成人av电影观看| 国产一区二区视频在线播放| 天天色图综合网| 一区二区三区久久久| 国产精品久久久久久亚洲毛片 | 成人精品高清在线| 久久se精品一区精品二区| 亚洲成a人片综合在线| 国产精品福利一区| 久久亚洲精精品中文字幕早川悠里| 欧美日韩综合色| 色哟哟精品一区| 欧美中文日韩| 亚洲一区二区三区高清不卡| 精品动漫3d一区二区三区免费版| 99re成人精品视频| 国产成人精品免费视频网站| 一区二区三区免费网站| 亚洲女人小视频在线观看| 国产精品热久久久久夜色精品三区 | 久久久久久久久久久久久久久99 | 视频在线在亚洲| 亚洲国产美国国产综合一区二区| 亚洲人成亚洲人成在线观看图片| 国产精品网站在线观看| 国产亚洲一区二区三区| 国产精品久久久久影视| 国产精品网曝门| 中文字幕精品一区| 久久久噜噜噜久久人人看| 欧美成人三级电影在线| 欧美一区二区性放荡片| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲精品偷拍| 亚洲黄网站黄| 亚洲黄色影院| 日韩亚洲欧美精品| 亚洲黄色一区| 亚洲色诱最新| 奶水喷射视频一区| 91国产精品成人| 欧美卡1卡2卡| 69精品人人人人| 91麻豆精品国产91久久久久| 欧美一级国产精品| 日韩精品一区二区三区中文不卡| 日韩欧美亚洲国产另类| 欧美在线免费观看视频| 欧美日韩综合在线| 在线成人高清不卡| 日韩欧美国产1|