最近公司開(kāi)始做新項(xiàng)目了,剛好有做這個(gè)郵箱驗(yàn)證功能,不多說(shuō),直接上代碼:
創(chuàng)新互聯(lián)長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為金口河企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,金口河網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。public static final String SMTPSERVER = "smtp.163.com";//郵箱服務(wù)器地址(用QQ還是網(wǎng)易看需求,我這里用的是網(wǎng)易郵箱) public static final String SMTPPORT = "465"; //郵箱服務(wù)器默認(rèn)端口 public static final String ACCOUT = "hgzlgl2017@163.com";//郵箱帳號(hào) public static final String PWD = "******";//這是授權(quán)碼,并不是郵箱的登錄密碼
首先是定義幾個(gè)重要的變量,其中第一第二個(gè)都是官方指定的,一般不能改變,值得注意的是最后一個(gè)PWD變量指的是授權(quán)碼,并不是郵箱的登錄密碼,也就是你在開(kāi)通這個(gè)smtp服務(wù)的時(shí)候設(shè)置的,至于如何開(kāi)啟這個(gè)smtp服務(wù),大家百度一下就行了,很簡(jiǎn)單的。我剛開(kāi)始就是把這個(gè)授權(quán)碼寫成了郵箱的登錄密碼,一直連不上,搞了我很久才明白的,希望大家不要步我的后塵。然后:
public static void main(String[] args) throws Exception { // 創(chuàng)建郵件配置 Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); // 使用的協(xié)議(JavaMail規(guī)范要求) props.setProperty("mail.smtp.host", SMTPSERVER); // 發(fā)件人的郵箱的 SMTP 服務(wù)器地址 props.setProperty("mail.smtp.port", SMTPPORT); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.setProperty("mail.smtp.auth", "true"); // 需要請(qǐng)求認(rèn)證 props.setProperty("mail.smtp.ssl.enable", "true");// 開(kāi)啟ssl // 根據(jù)郵件配置創(chuàng)建會(huì)話,注意session別導(dǎo)錯(cuò)包 Session session = Session.getDefaultInstance(props); // 開(kāi)啟debug模式,可以看到更多詳細(xì)的輸入日志 session.setDebug(true); //創(chuàng)建郵件 MimeMessage message = createEmail(session); //獲取傳輸通道 Transport transport = session.getTransport(); transport.connect(SMTPSERVER,ACCOUT, PWD); //連接,并發(fā)送郵件 transport.sendMessage(message, message.getAllRecipients()); transport.close(); }
這里需要注意的主要是郵件的配置,其他的照搬代碼就可以了,最后:
public static MimeMessage createEmail(Session session) throws Exception { // 根據(jù)會(huì)話創(chuàng)建郵件 MimeMessage msg = new MimeMessage(session); // address郵件地址, personal郵件昵稱, charset編碼方式 InternetAddress fromAddress = new InternetAddress(ACCOUT, "廣西宏桂資產(chǎn)租賃有限公司", "utf-8"); // 設(shè)置發(fā)送郵件方 msg.setFrom(fromAddress); InternetAddress receiveAddress = new InternetAddress( "3386173538@qq.com", "郵箱驗(yàn)證", "utf-8"); // 設(shè)置郵件接收方 msg.setRecipient(RecipientType.TO, receiveAddress); // 設(shè)置郵件標(biāo)題 msg.setSubject("郵箱驗(yàn)證", "utf-8"); //msg.setContent(m,"text/html;charset=gb2312"); msg.setText("我是個(gè)程序員,一天我坐在路邊一邊喝水一邊苦苦檢查程序。 這時(shí)一個(gè)乞丐在我邊上坐下了,開(kāi)始要飯,我覺(jué)得可憐,就給了他1塊錢。 然后接著調(diào)試程序。他可能生意不好,就無(wú)聊的看看我在干什么,然后過(guò)了一會(huì),他緩緩地指著我的屏幕說(shuō),這里少了個(gè)分號(hào)"); // 設(shè)置顯示的發(fā)件時(shí)間 msg.setSentDate(new Date()); // 保存設(shè)置 msg.saveChanges(); return msg; }
這個(gè)方法是用來(lái)創(chuàng)建郵箱的。我之前做的時(shí)候遇到了三個(gè)問(wèn)題,一個(gè)是我注冊(cè)的郵箱的smtp服務(wù)沒(méi)有開(kāi)啟,別一個(gè)就是授權(quán)碼弄錯(cuò)了,還有一個(gè)就是我用的是Myeclipse8.5開(kāi)發(fā)工具,這個(gè)工具不支持javaee6,而這個(gè)郵箱驗(yàn)證功能需要用到的是javaee6,所以我用的javaee5就報(bào)了異常,于是我把javaee5移除remove掉,自己在工程下創(chuàng)建一個(gè)文件夾,然后把javaee6這里面的jar包全復(fù)制進(jìn)去,然后再添加到路徑,這樣就可以了。