<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            java語言

            java實現后臺自動發郵件功能

            時間:2025-04-13 10:47:04 java語言 我要投稿

            java實現后臺自動發郵件功能

              java后臺自動發郵件功能怎樣實現呢?下面是小編帶來的解決方法,希望對您有所幫助!

            java實現后臺自動發郵件功能

              web.xml文件

              <?xml version="1.0" encoding="UTF-8"?>

              <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

              <web-app>

              <servlet>

              <servlet-name>mailsenderservlet</servlet-name><!--郵件發送程序-->

              <servlet-class>com.email.MailSenderServlet</servlet-class>

              <init-param>

              <param-name>server</param-name><!--郵件服務器SMTP地址-->

              <param-value>smtp.163.com</param-value>

              </init-param>

              <init-param>

              <param-name>port</param-name><!--郵件服務器SMTP端口-->

              <param-value>25</param-value>

              </init-param>

              <init-param>

              <param-name>address</param-name><!--郵件地址-->

              <param-value>username@163.com</param-value>

              </init-param>

              <init-param>

              <param-name>username</param-name><!--郵件賬號-->

              <param-value>username</param-value>

              </init-param>

              <init-param>

              <param-name>password</param-name><!--密碼-->

              <param-value>******</param-value>

              </init-param>

              <init-param>

              <param-name>validate</param-name><!--SMTP服務器是否要求驗證-->

              <param-value>true</param-value>

              </init-param>

              <init-param>

              <param-name>time</param-name><!--掃描數據庫時間間隔(分鐘)-->

              <param-value>5</param-value>

              </init-param>

              <load-on-startup>1</load-on-startup>

              </servlet>

              </web-app>

              servlet:

              package com.email;

              import javax.servlet.*;

              import javax.servlet.http.*;

              import java.io.*;

              public class MailSenderServlet

              extends HttpServlet {

              private MailSender sender;

              private Thread t;

              public void init() throws ServletException {

              sender = new MailSender();

              sender.setRoot(root);

              String server = getInitParameter("server");

              String port = getInitParameter("port");

              String address = getInitParameter("address");

              String username = getInitParameter("username");

              String password = getInitParameter("password");

              if (server == null || port == null || address == null || username == null ||

              password == null) {

              System.out.println("系統文件web.xml錯誤:郵件發送程序初始化失敗!");

              return;

              }

              sender.setServer(server);

              sender.setPort(port);

              sender.setAddress(address);

              sender.setUsername(username);

              sender.setPassword(password);

              String time = getInitParameter("time");

              if (time != null) {

              sender.setTime(Integer.parseInt(time));

              }

              String validate = getInitParameter("validate");

              if (validate != null) {

              sender.setValidate(Boolean.valueOf(validate).booleanValue());

              }

              t = new Thread(sender);

              t.start(); //啟動郵件發送線程

              }

              public void destroy() {

              sender.stop(); //停止郵件發送線程

              try {

              t.join(1000);

              if (t.isAlive()) {

              System.out.println("郵件發送線程未停止。");

              }

              }

              catch (Exception e) {}

              }

              }

              郵件發送程序

              package com.email;

              import java.io.*;

              import java.sql.*;

              import java.util.*;

              import java.util.Date;

              import javax.activation.*;

              import javax.mail.*;

              import javax.mail.Message.*;

              import javax.mail.internet.*;

              /**

              * <p>Copyright: Copyright (c) 2004</p>

              * @author flyxxxxx@163.com

              * @version 1.0

              */

              public class MailSender

              implements Runnable {

              private int time = 5 * 60 * 1000; //掃描數據庫時間間隔

              private boolean flag = true; //停止線程標記

              private String server = "127.0.0.1"; //SMTP服務器地址

              private String port = "25"; //SMTP服務器端口

              private String address; //用于發送EMAIL的發送者地址

              private String username; //發送者的用戶名

              private String password; //發送者的密碼

              private boolean validate = true; //郵件服務器是否要求驗證

              private File root = null; //WEB根目錄

              MailConfigManager manager = MailConfigManager.getInstance();

              public MailSender() {

              }

              public void setAddress(String address) {

              this.address = address;

              }

              public void setPassword(String password) {

              this.password = password;

              }

              public void setPort(String port) {

              if (port != null && port.length() > 0) {

              this.port = port;

              }

              }

              public void setServer(String server) {

              this.server = server;

              }

              public void setUsername(String username) {

              this.username = username;

              }

              public void setValidate(boolean validate) {

              this.validate = validate;

              }

              public void setTime(int minute) {

              this.time = minute * 60 * 1000;

              }

              public void run() {

              long lastTime = new Date().getTime(); //保存前一次發送郵件的時間

              while (flag) { //服務器停止時退出線程

              long k = new Date().getTime() - lastTime;

              if (k < -1000) { //防止系統修改時間

              lastTime = new Date().getTime();

              continue;

              }

              if (k > time) { //超過設定時間間隔開始發送郵件

              sendData();

              lastTime = new Date().getTime();

              }

              try {

              Thread.sleep(100);

              }

              catch (Exception e) {}

              }

              }

              public void stop() {

              flag = false;

              }

              /**

              * 檢索數據庫,并發送郵件

              */

              private void sendData() {

              ResultSet rs=null;//讀取數據庫數據

              try {

              Session session = Session.getInstance(getProperties(), new Authentic());

              while(flag) {//服務器停止時退出線程

              String toAddress = null;//發送地址(從rs中得到)

              String subject = null;//郵件主題

              String content = null ;//郵件內容

              String file[] = null;//所有附件(絕對路徑)

              sendMail(session, toAddress, subject, content, file);//發送郵件

              }

              }

              catch (Exception e) {

              e.printStackTrace();

              }

              finally {

              if(rs!=null){

              try{

              rs.close();

              }

              catch(SQLException e){}

              }

              }

              }

              /**

              * 發送郵件

              * @param session 會話

              * @param toAddress 目的地址

              * @param subject 郵件主題

              * @param content 郵件內容(HTML)

              * @param files 郵件附件

              * @return 是否發送成功

              */

              private boolean sendMail(Session session, String toAddress, String subject,

              String content, String[] files) {

              toAddress = "lijin@regaltec.com.cn";

              try {

              Message rs = new MimeMessage(session);

              Address from = new InternetAddress(address);

              rs.setFrom(from); //發送地址

              rs.setRecipient(RecipientType.TO, new InternetAddress(toAddress)); //接收地址

              rs.setSubject(subject); //郵件主題

              Multipart mp = new MimeMultipart();

              BodyPart html = new MimeBodyPart();

              html.setContent(content, "text/html; charset=GBK"); //郵件HTML內容

              mp.addBodyPart(html);

              if (files != null && files.length > 0) { //郵件附件

              for (int i = 0; i < files.length; i++) {

              MimeBodyPart mbp = new MimeBodyPart();

              FileDataSource fds = new FileDataSource(files[i]);

              mbp.setDataHandler(new DataHandler(fds));

              mbp.setFileName(MimeUtility.encodeWord(files[i]), "GBK", null));

              mp.addBodyPart(mbp);

              }

              }

              rs.setContent(mp); //郵件全部內容

              rs.setSentDate(new Date()); //發送時間

              Transport.send(rs); //發送

              return true;

              }

              catch (Exception e) {

              e.printStackTrace();

              return false;

              }

              }

              /**

              * 郵件會話屬性

              * @return 會話屬性

              */

              private Properties getProperties() {

              Properties rs = new Properties();

              rs.put("mail.smtp.host", server);

              rs.put("mail.smtp.port", port);

              rs.put("mail.smtp.auth", validate ? "true" : "false");

              return rs;

              }

              public void setRoot(File root) {

              this.root = root;

              }

              class Authentic

              extends Authenticator { //驗證密碼

              public Authentic() {

              }

              public PasswordAuthentication getPasswordAuthentication() {

              return new PasswordAuthentication(username, password);

              }

              }

              }


            更多java相關文章推薦:

            1.Java語言的優點有哪些

            2.2017年3月計算機二級Java習題及答案

            3.新手學習Java語言六大關鍵

            4.計算機二級JAVA考試要點復習

            5.java編譯計算器

            6.Java入門教程:控制語

            7.Java語言的簡介

            8.經常被遺忘的Java面試題

            9.2016年12月計算機二級Java練習題及答案

            10.2017計算機二級Java練習題及答案

            11.Java語言學習的.主要內容

            【java實現后臺自動發郵件功能】相關文章:

            java如何實現后臺自動發郵件功能03-09

            如何運用Java socket實現多人聊天室功能01-14

            如何使用Java實現AC自動機全文檢索實例04-30

            Java 隊列實現原理及簡單實現代碼03-18

            thinkPHP實現的聯動菜單功能03-04

            Java實現多繼承的實例07-18

            Java實現多線程的方法04-15

            權重隨機算法的java實現08-13

            關于Java動態實現的方法04-20

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院