java發送javax.mail郵件實例講授。本站提示廣大學習愛好者:(java發送javax.mail郵件實例講授)文章只能為提供參考,不一定能成為您想要的結果。以下是java發送javax.mail郵件實例講授正文
日常平凡我們網上逛網站的時刻,常常會用到網站的注冊。有許多辦法,好比發短信驗證,發郵箱驗證。比來在SSH框架下,做了一個簡略的郵件發送激活鏈接到郵箱,然後激活注冊用戶的一個功效。我用到的MailServer是易郵郵件辦事器,援用的是javax.mail.jar包。javamail望文生義,供給給開辟者處置電子郵件相干的編程接口。它是Sun宣布的用來處置email的API。它可以便利地履行一些經常使用的郵件傳輸。
【經常使用類引見】
上面有一些經常使用的類,給年夜家引見一下:
【Authenticator】
這個是一個籠統類,經由過程用戶名和暗碼拜訪受掩護的資本,這些資本就是郵件辦事器。創立完成後,必需向 session 注冊 Authenticator。然後,在須要認證的時刻,就會告訴 Authenticator。
【Message】
這是一個籠統類用來創立要發送的新聞,好比主題,內容啊。必需有一個子類來完成辦法。
【Session】
Session類界說了一個根本郵件會話(session),是Java Mail API最高層進口類。一切其它類都是經過這個session才得以失效。Session對象用Java.util.Properties對象獲得信息,如郵件辦事器、用戶名、暗碼及全部運用法式中同享的其它信息。這個Session類代表JavaMail中的一個郵件session。每個基於JavaMail的運用法式至多有一個session然則可以有隨意率性多的session。
Session sendMailSession;
sendMailSession = Session.getInstance(props, null);
【Transport】
新聞發送的最初一部門是應用Transport類。這個類用協定指定的說話發送新聞(平日是SMTP)。它是籠統類,它的任務方法與Session有些相似。僅挪用靜態send() 辦法,就可以應用類的缺省版本:Transport.send(message)。或許,讀者也能夠從針對本身的協定的會話中取得一個特定的實例,傳遞用戶名和暗碼(假如不用要就不傳),發送新聞,然後封閉銜接。
【代碼完成】
mail對象類:
package cn.itcast.shop.utils; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.Message.RecipientType; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; /** * 郵件發送對象類 * @author Zhouzhou * @date 2016-1-1 * @time 上午08:52:47 */ public class MailUitls { public static void sendMail(String to,String code){ /** * 1.獲得session * 2.創立一個代碼郵件的對象message * 3.發送郵件Transport */ /** * 1.取得銜接對象 */ Properties props=new Properties(); props.setProperty("mail.host","localhost"); Session session=Session.getDefaultInstance(props, new Authenticator(){ @Override protected PasswordAuthentication getPasswordAuthentication() { // TODO Auto-generated method stub return new PasswordAuthentication("[email protected]","111"); } }); //2.創立郵件發送對象 Message message=new MimeMessage(session); //3.設置發件人 try { message.setFrom(new InternetAddress("[email protected]")); //設置收件人 message.addRecipient(RecipientType.TO, new InternetAddress(to)); //題目 message.setSubject("來自周洲商城的官方激活郵件"); message.setContent("<h1>AZZ商城官方激活郵件!點上面鏈接完成激活操作!</h1><h3><a href='http://192.168.21.114:8080/shop/user_active.action?code="+code+"'>http://192.168.21.114:8080/shop/user_active.action?code="+code+"</a></h3>", "text/html;charset=UTF-8"); // 3.發送郵件: Transport.send(message); } catch (AddressException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { sendMail("[email protected]","你的激活碼是azz19931016"); } }
User的營業層在注冊的時刻挪用這個類,應用sendmail辦法。
package cn.itcast.shop.user.service; import org.springframework.transaction.annotation.Transactional; import cn.itcast.shop.user.dao.UserDao; import cn.itcast.shop.user.vo.User; import cn.itcast.shop.utils.MailUitls; import cn.itcast.shop.utils.UUIDUtils; //營業層 @Transactional public class UserService { //裝置用戶名查詢用戶的辦法 private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } public User findByUsername(String username){ return userDao.findByUsername(username); } //營業層:完成 用戶注冊 public void save(User user) { // TODO Auto-generated method stub //將數據存入數據庫 user.setState(0);//1曾經激活,0沒有激活 String code=UUIDUtils.getUUID()+UUIDUtils.getUUID(); user.setCode(code); userDao.save(user); // 發送激活郵件; MailUitls.sendMail(user.getEmail(), code); } // 營業層依據激活碼查詢用戶 public User findByCode(String code) { return userDao.findByCode(code); } // 修正用戶的狀況的辦法 public void update(User existUser) { userDao.update(existUser); } // 用戶登錄的辦法 public User login(User user) { return userDao.login(user); } }
最初完成了如許的後果:
以上就是本文的全體內容,願望對年夜家的進修有所贊助。