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