當前位置:
首頁 >
JavaMail发送邮件的笔记及Demo
發(fā)布時間:2025/3/15
23
豆豆
生活随笔
收集整理的這篇文章主要介紹了
JavaMail发送邮件的笔记及Demo
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近碰到一個需求,就是注冊用戶時候需要向用戶發(fā)送激活郵箱,于是照著網(wǎng)上搜來的demo自己試著運行了一下,發(fā)件時我用的是網(wǎng)易163郵箱,收件時用QQ郵箱,運行后報了一個錯誤:
網(wǎng)絡(luò)上搜索解決方式,多次嘗試后發(fā)現(xiàn)了問題,原來是我的163郵箱賬號沒有開啟客戶端授權(quán),因此也就沒有開啟SMTP服務(wù),這是無法用javamail程序作為發(fā)件人發(fā)送郵箱的,于是在設(shè)置里開始授權(quán)及服務(wù)之后,滿心歡喜的再次運行,悲哀的是又報了另一個錯誤:
無奈再次開始調(diào)試,最后終于發(fā)現(xiàn)了問題,正如網(wǎng)友說的,因為你驗證的郵箱用戶名和你發(fā)送的時候添寫的郵箱地址不一樣,SMTP服務(wù)器駁回了你的請求,我在驗證的時候使用的我自己的163郵箱,在設(shè)置發(fā)信人的時候,誤把xxxxxx@163.com寫成了xxxxxxx@qq.com(不能忍),改正過來以后,如愿以償,終于可以發(fā)送郵件了,以下是代碼和注釋:
/*** javamail發(fā)郵件* @throws Exception * @throws AddressException */@Testpublic void sendMailDemo() throws Exception{/*** 1.得到session*/// Properties是Session的屬性對象,用于封裝針對SMTP的一些常用屬性Properties props=new Properties();//設(shè)置smtp服務(wù)器地址props.setProperty("mail.host", "smtp.163.com");//設(shè)置SMTP服務(wù)器是否需要用戶認證,默認為false,設(shè)為trueprops.setProperty("mail.smtp.auth", "true");Authenticator auth=new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {//注意:下面的登錄用戶名是@前邊的內(nèi)容,如果你的賬號是haha@163.com,只需要輸入hahareturn new PasswordAuthentication("郵件服務(wù)器登錄用戶名", "登錄密碼");}};Session session = Session.getInstance(props,auth);/*** 2.創(chuàng)建MimeMessage*/MimeMessage msg=new MimeMessage(session);//設(shè)置發(fā)件人msg.setFrom(new InternetAddress("發(fā)送方郵箱賬號"));//設(shè)置收件人msg.setRecipients(RecipientType.TO,"接受方郵箱賬號");//設(shè)置抄送msg.setRecipients(RecipientType.CC,"郵箱賬號");//設(shè)置主題msg.setSubject("javamail發(fā)送郵件Demo");//設(shè)置內(nèi)容msg.setContent("我是郵件","text/html;charset=utf-8");
/*** 3.發(fā)送*/Transport.send(msg);}
?下面在介紹一下發(fā)送帶附件的郵件需要修改的代碼,只需要將上面的:
msg.setContent("我是郵件","text/html;charset=utf-8")替換成下面的代碼即可:
MimeMultipart list=new MimeMultipart();//創(chuàng)建MimebodtPartMimeBodyPart part1=new MimeBodyPart();part1.setContent("這是一封包含附件的垃圾郵箱","text/html;charset=utf-8");list.addBodyPart(part1);//創(chuàng)建MimebodtPartMimeBodyPart part2=new MimeBodyPart();//設(shè)置附件內(nèi)容part2.attachFile(new File("e:/照片/me.jpg"));//設(shè)置顯示的文件名 順便解決亂碼問題part2.setFileName(MimeUtility.encodeText("哎喲,不錯哦.jpg"));list.addBodyPart(part2);msg.setContent(list);?
總結(jié)
以上是生活随笔為你收集整理的JavaMail发送邮件的笔记及Demo的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电商领域中SKU和SPU区别比较
- 下一篇: Java中子类覆盖父类方法所必须满足的条