Java 發送郵件功能詳細闡述

一、WPS發送郵件功能

WPS 內置了郵件發送功能,使用方便,但是需要配置郵箱信息才能使用。

1、首先在 WPS 中選中想要發送郵件的文檔,點擊「文件」->「發送」->「發送為附件」。

2、在彈出的「發送郵件」窗口中,填寫收件人、抄送、格式等信息,點擊「發送」按鈕即可。

3、如果彈出「發件人用戶身份驗證」窗口,則需要輸入郵箱賬號和密碼進行驗證。


    private static final String EMAIL_USERNAME = "你的郵箱賬號";
    private static final String EMAIL_PASSWORD = "你的郵箱密碼";
    private static final String EMAIL_HOST = "smtp.郵箱後綴";
    public static void main(String[] args) throws Exception {
        //創建一個郵件對象
        MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
        //設置發件人
        message.setFrom(new InternetAddress(EMAIL_USERNAME));
        //設置收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人郵箱"));
        //設置郵件主題
        message.setSubject("郵件主題");
        //設置郵件內容
        message.setContent("郵件內容", "text/html;charset=UTF-8"); 
        //創建Transport對象
        Transport transport = Session.getInstance(System.getProperties()).getTransport();
        //連接郵件伺服器
        transport.connect(EMAIL_HOST,EMAIL_USERNAME,EMAIL_PASSWORD);
        //發送郵件
        transport.sendMessage(message, message.getAllRecipients());
        //關閉連接
        transport.close();
    }

二、一鍵發送郵件功能

一鍵發送郵件功能是通過使用郵件 API 將郵件功能集成到程序中,並提供簡單的 UI 界面,方便用戶選擇收件人、郵件主題和郵件內容。

1、創建 UI 界面,用於用戶選擇收件人、郵件主題和郵件內容。

2、使用 JavaMail API 創建郵件對象,設置收件人、郵件主題和郵件內容等信息。

3、使用 JavaMail API 發送郵件。


    public static void main(String[] args) throws Exception {
        //創建 JFrame 窗口
        JFrame frame = new JFrame();
        //添加組件到窗口,包括收件人、主題和內容選項等
        frame.getContentPane().add(new EmailForm());
        //設置窗口大小、可見性和關閉方式
        frame.setSize(550, 350);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public class EmailForm extends JPanel {
        private JTextField toField;
        private JTextField subjectField;
        private JTextArea contentArea;
        public EmailForm() {
            //創建組件
            toField = new JTextField();
            subjectField = new JTextField();
            contentArea = new JTextArea();
            JButton sendButton = new JButton("發送郵件");
            //添加事件監聽器
            sendButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    try {
                        //創建郵件對象
                        MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
                        //設置發件人
                        message.setFrom(new InternetAddress("發件人郵箱"));
                        //設置收件人
                        message.setRecipient(Message.RecipientType.TO, new InternetAddress(toField.getText()));
                        //設置郵件主題
                        message.setSubject(subjectField.getText());
                        //設置郵件內容
                        message.setContent(contentArea.getText(), "text/html;charset=UTF-8");
                        //創建Transport對象
                        Transport transport = Session.getInstance(System.getProperties()).getTransport();
                        //連接郵件伺服器
                        transport.connect("smtp.郵箱後綴", "發件人郵箱", "發件人密碼");
                        //發送郵件
                        transport.sendMessage(message, message.getAllRecipients());
                        //關閉連接
                        transport.close();
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            });
            //將組件添加到 UI 界面
            this.setLayout(new BorderLayout());
            this.add(new JLabel(" 收件人:"), BorderLayout.WEST);
            this.add(toField, BorderLayout.CENTER);
            this.add(new JLabel(" 郵件主題:"), BorderLayout.NORTH);
            this.add(subjectField, BorderLayout.NORTH);
            this.add(new JScrollPane(contentArea), BorderLayout.CENTER);
            this.add(sendButton, BorderLayout.SOUTH);
        }
    }

三、微信發送郵件功能

微信發送郵件功能是通過設置微信中的小程序,將程序與郵箱功能集成到一起,方便用戶在微信中直接發送郵件。

1、在微信中下載並安裝指定小程序。

2、在微信中進入小程序,填寫收件人、郵件主題和郵件內容等信息,點擊「發送」即可。

3、小程序通過 API 調用 JavaMail API 發送郵件。


    public static void main(String[] args) throws Exception {
        //創建微信小程序對象
        MiniProgram miniProgram = new MiniProgram();
        //添加事件監聽器,用於發送郵件
        miniProgram.setOnSendButtonClickListener(new OnSendButtonClickListener() {
            public void onSendButtonClicked(String to, String subject, String content) {
                try {
                    //創建郵件對象
                    MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
                    //設置發件人
                    message.setFrom(new InternetAddress("發件人郵箱"));
                    //設置收件人
                    message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
                    //設置郵件主題
                    message.setSubject(subject);
                    //設置郵件內容
                    message.setContent(content, "text/html;charset=UTF-8");
                    //創建Transport對象
                    Transport transport = Session.getInstance(System.getProperties()).getTransport();
                    //連接郵件伺服器
                    transport.connect("smtp.郵箱後綴", "發件人郵箱", "發件人密碼");
                    //發送郵件
                    transport.sendMessage(message, message.getAllRecipients());
                    //關閉連接
                    transport.close();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
        //打開小程序的 UI 界面
        miniProgram.showUI();
    }

四、自動發送郵件的功能

自動發送郵件是指在程序中定時發送指定郵件,例如每天定時發送一封日報郵件。

1、使用 JavaMail API 創建郵件對象,設置收件人、郵件主題和郵件內容等信息。

2、使用 Timer 定時器設置郵件發送時間。


    public static void main(String[] args) throws Exception {
        //創建 Timer 定時器
        Timer timer = new Timer();
        //用於記錄上一次郵件發送時間
        Date lastSendTime = null;
        //將郵件發送任務添加到定時器中
        timer.schedule(new TimerTask() {
            public void run() {
                try {
                    Date now = new Date();
                    //如果當前時間滿足發送條件,則發送郵件
                    if (isSendTime(now)) {
                        //創建郵件對象
                        MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
                        //設置發件人
                        message.setFrom(new InternetAddress("發件人郵箱"));
                        //設置收件人
                        message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人郵箱"));
                        //設置郵件主題
                        message.setSubject("郵件主題");
                        //設置郵件內容
                        message.setContent("郵件內容", "text/html;charset=UTF-8");
                        //創建Transport對象
                        Transport transport = Session.getInstance(System.getProperties()).getTransport();
                        //連接郵件伺服器
                        transport.connect("smtp.郵箱後綴", "發件人郵箱", "發件人密碼");
                        //發送郵件
                        transport.sendMessage(message, message.getAllRecipients());
                        //關閉連接
                        transport.close();
                        //更新上一次郵件發送時間
                        lastSendTime = now;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            //判斷是否滿足發送條件
            private boolean isSendTime(Date now) {
                if (lastSendTime == null) {
                    return true;
                }
                Calendar nowCalendar = new GregorianCalendar();
                nowCalendar.setTime(now);
                Calendar lastSendTimeCalendar = new GregorianCalendar();
                lastSendTimeCalendar.setTime(lastSendTime);
                return nowCalendar.get(Calendar.DAY_OF_YEAR) != lastSendTimeCalendar.get(Calendar.DAY_OF_YEAR);
            }
        }, 0, 60 * 60 * 1000); //定時發送時間間隔為1小時
    }

五、掃描之後沒有發送郵件的功能

掃描之後沒有發送郵件的功能是指在掃描完畢之後,通過分析掃描結果自動發送郵件通知。

1、掃描完畢之後,將掃描結果存儲到資料庫中。

2、使用 JDBC 訪問資料庫,分析掃描結果,生成郵件內容。

3、使用 JavaMail API 發送郵件。


    public static void main(String[] args) throws Exception {
        //掃描完畢之後保存結果到資料庫中
        saveScanResult();
        //根據掃描結果生成郵件內容
        String content = generateEmailContent();
        //創建郵件對象
        MimeMessage message = new MimeMessage(Session.getDefaultInstance(System.getProperties()));
        //設置發件人
        message.setFrom(new InternetAddress("發件人郵箱"));
        //設置收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人郵箱"));
        //設置郵件主題
        message.setSubject("郵件主題");
        //設置郵件內容
        message.setContent(content, "text/html;charset=UTF-8");
        //創建Transport對象
        Transport transport = Session.getInstance(System.getProperties()).getTransport();
        //連接郵件伺服器
        transport.connect("smtp.郵箱後綴", "發件人郵箱", "發件人密碼");
        //發送郵件
        transport.sendMessage(message, message.getAllRecipients());
        //關閉連接
        transport.close();
    }
    //保存掃描結果到資料庫中
    private static void saveScanResult() {
        try {
            //連接資料庫
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
            //執行保存操作
            PreparedStatement statement = connection.prepareStatement("insert into scan_result (scan_time, result) values (?, ?)");
            statement.setDate(1, new Date(System.currentTimeMillis()));
            statement.setString(2, "掃描結果");
            statement.executeUpdate();
            //關閉連接
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //根據掃描結果生成郵件內容
    private static String generateEmailContent() {
        StringBuilder builder = new StringBuilder();
        try {
            //連接資料庫
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
            //查詢掃描結果
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("select * from scan_result");
            //生成郵件內容
            builder.append("

掃描結果如下:

"); while (resultSet.next()) { builder.append("

" + resultSet.getDate("scan_time") + " : " + resultSet.getString("result") + "

"); } //關閉連接 resultSet.close(); statement.close(); connection.close(); } catch (Exception e) { e.printStackTrace(); } return builder.toString(); }

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243520.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:56
下一篇 2024-12-12 12:56

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論