JavaMail給本地郵箱發郵件

,最近發現書店項目中沒有忘記密碼的找回功能,於是決定學習相關知識,但是今天一下午也只會在本地郵件服務器上通過某一賬號給本地另一個賬號發送郵件,並不能發送到QQ郵箱或者是163郵箱裏面,原因目前還不太清楚,後面再去慢慢了解吧。
對於目前的需求我是希望點擊忘記密碼之後跳出填寫郵箱賬號的頁面,在頁面中輸入自己的郵箱賬號,確定後系統判斷數據庫中是否存在該郵箱,如果存在則發送6位隨機數組成的驗證碼給該賬號,跳轉到輸入驗證碼的頁面,否則提示郵箱不存在,若驗證碼正確則跳轉到重置密碼的頁面,否則給出提示,留在輸入郵箱的頁面。
首先安裝郵箱服務器,和Foxmail郵箱管理軟件,最後一個jar包是放到項目下面的,只需要把裏面的jar文件拷過去了行了。
這裏寫圖片描述
這兩個軟件在網上都很容易下載到的,安裝的過程都是直接下一步,首先需要在工具裏面的服務器設置設置一下域名,選擇單域名meetbookstore.com,然後在本地服務器上添加兩個賬號[email protected][email protected],完了之後郵箱服務器不能關閉就像tomcat服務器一樣要處於打開狀態,然後在Foxmail的賬號管理中添加這兩個賬號,服務器地址都填localhost其它默認。可以嘗試用一個賬號給另一個賬號發送郵件。
然後就可以編寫發送郵件的方法了

//發送郵件
        /**
         * 
         * @param to:目的郵箱地址
         * @param code:郵件的驗證碼
         * @throws MessagingException 
         * @throws AddressException 
         */
        public static void send(String to,int code) throws Exception {
            //1、創建連接對象,連接到郵件服務器
            Properties props=new Properties();
            Session session=Session.getInstance(props, new Authenticator() {

                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    // TODO Auto-generated method stub
                    return new PasswordAuthentication("[email protected]", "111");
                }

            });
            //2、創建郵件對象
            Message message=new MimeMessage(session);
            //設置發件人
            message.setFrom(new InternetAddress("[email protected]"));
            //設置收件人
            message.setRecipient(RecipientType.TO,new InternetAddress(to));
            //設置郵件的主題
            message.setSubject("來自遇見書屋的驗證郵件");
            //設置郵件正文,內容,文件類型
            message.setContent("<h1>來自遇見書屋的驗證郵件</h1><h3>您找回遇見書屋密碼的驗證碼爲:"+code+",如非本人操作,請忽略此郵件。--遇見書屋團隊</h3>", "text/html;charset=UTF-8");
            //3、發送一封帶驗證碼的郵件
            Transport.send(message);
        }

注意引入的類出現相同類名的都選擇下面的Mail那一個

import java.util.Properties;
import java.util.Random;

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;

然後編寫測試方法

 public static void main(String[] args) throws Exception {

            Random random=new Random();
            int num=Math.abs(random.nextInt());
            num=num%900000+100000;
            send("[email protected]",num);
        }

num變量是隨機生成的6位數的驗證碼,[email protected]是發送方,密碼爲111,接收方是[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章