從數據庫中查詢郵箱,然後發送多人郵件

聲明:本人的框架是SSM
1、寫一個email工具類

public class EmailUtil {
    public void sendMessage(String[] receivers) throws Exception{   
        Properties prop = new Properties();
        // 開啓debug調試,以便在控制檯查看
        prop.setProperty("mail.debug", "true"); 
        // 設置郵件服務器主機名
        prop.setProperty("mail.host", "smtp.163.com");
        // 發送服務器需要身份驗證
        prop.setProperty("mail.smtp.auth", "true");
        // 發送郵件協議名稱
        prop.setProperty("mail.transport.protocol", "smtp");

        // 開啓SSL加密,否則會失敗
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable", "true");
        prop.put("mail.smtp.ssl.socketFactory", sf);

        // 創建session
        Session session = Session.getInstance(prop);
        // 通過session得到transport對象
        Transport ts = session.getTransport();
        // 連接郵件服務器:郵箱類型,帳號,授權碼代替密碼(更安全)
        ts.connect("smtp.163.com","[email protected]", "xxxxx授權碼");
        // 創建郵件
        // 創建郵件對象
        MimeMessage message = new MimeMessage(session);
        // 指明郵件的發件人
        message.setFrom(new InternetAddress("[email protected]"));
        // 指明郵件的收件人,現在發件人和收件人是一樣的,那就是自己給自己發

        for (String receiver : receivers) {
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
            // 郵件的標題
            message.setSubject("郵件測試");
            // 郵件的文本內容
            message.setContent(""
                    + "<h1><font color=red>"
                    + "京東邀請你參加京東9月20日,京東商品節!更多優惠商品等你來買,買的越多優惠越多!趕快行動吧!"
                    + "</font></h1>"
                    + "", "text/html;charset=UTF-8");
            // 發送郵件
        }
        ts.sendMessage(message, message.getAllRecipients());
        ts.close();
    }   
}

2、定義一個job類,主要是

public class SendEmail {
    //注入service
    @Resource
    private UserService userService;
    public void sendEmail(){
        //查詢郵箱
        List<String> receivers=userService.findEmail();
        //定一個數組,將查詢到的郵箱一一放入數組中
        String[] receiverArray=new String[receivers.size()];
        for(int i=0;i<receivers.size();i++){
            receiverArray[i]=receivers.get(i);
        }
        //調用EmailUtile方法,發送郵件
        EmailUtil emailUtil=new EmailUtil();

        try {
            emailUtil.sendMessage(receiverArray);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

applicationContent.xml中

//id隨意起一個名字,主要是下面ref要與這個名字相同  class="job類所在的位置" method="job類中的方法名"
    <bean id="jobA" class="com.zhiyou.job.SendEmail"></bean>
        <task:scheduled-tasks>
            <task:scheduled ref="jobA" method="sendEmail" cron="1 12 12 12 12 ?"/>
        </task:scheduled-tasks>     
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章