JavaMail發送郵件?超簡單,來看看

1. 什麼是JavaMail?

百度百科這樣說的html

1.1 應用場景

用戶註冊時,輸入郵箱
經過JavaMail技術,向用戶郵箱發送一封激活郵件, 含有激活碼
用戶在24小時內, 能夠點擊激活郵件連接, 板頂郵箱
郵箱激活碼保存時間能夠使用Redis(內存數據庫)實現

2. 實現步驟

2.1 配置網易郵箱

開啓客戶端受權碼(開啓POP3/SMTP服務和IMAP/SMTP服務) java

2.2 建立maven項目

2.3 導入pom依賴座標

<dependencies>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
    </dependencies>

2.4 開始編寫代碼啦

2.4.1 建立Demo類

2.4.2 郵件發送步驟

1 設置郵件發送的屬性
2 設置主機地址
3 設置是否打開驗證
4 建立連接
5 建立郵件
6 設置發送者
7 設置接收者
8 設置標題
9 設置正文
10 發送

2.4.3 代碼實現

package com.manlu;

import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * @author 漫路
 */
public class Demo {
    public static void main(String[] args) throws Exception {
        // 1 準備發送郵件須要的參數
        Properties props = new Properties();
        // 設置主機地址 smtp.qq.com smtp.126.com smtp.163.com
        props.put("mail.smtp.host", "smtp.163.com");
        // 是否打開驗證:只能設置true,必須打開
        props.put("mail.smtp.auth", true);
        // 2 鏈接郵件服務器
        Session session = Session.getDefaultInstance(props);
        // 3 建立郵件信息
        MimeMessage message = new MimeMessage(session);
        // 4 設置發送者。 來源郵箱,使用你的帳號
        InternetAddress fromAddress = new InternetAddress("123456@163.com");
        message.setFrom(fromAddress);
        // 5 設置接收者。接收者的郵箱
        InternetAddress toAddress = new InternetAddress("654321@qq.com");
        // to:直接接收者    cc:抄送    bcc:暗送
        message.setRecipient(MimeMessage.RecipientType.TO, toAddress);
        // 6 設置主題
        message.setSubject("測試標題");
        // 7 設置正文
        message.setText("小老弟,幹嗎呢??");

        // 設置HTML方式發送
        //message.setContent(text, "text/html;charset=utf-8");

        // 8 發送:小老弟,幹嗎呢???
        Transport transport = session.getTransport("smtp");// 參數不能少,表示的是發送協議
        // 登陸郵箱,此處的密碼是受權碼
        // 受權碼(登陸郵箱-->設置-->郵箱安全設置-->客戶端受權密碼),這裏不是郵箱的密碼,切記!
        transport.connect("123456@163.com", "1234");
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        System.out.println("ok");
    }
}

2.4.3 測試

注意:上面代碼裏的參數我胡亂填的,改爲你真實的便可數據庫

成功安全

2.5 編寫工具類,方便使用

2.5.1代碼

package com.manlu.utils;

import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import java.util.Properties;

/**
 * @author manlu
 */
public class MailUtil {
    public static String smtp_host = "smtp.163.com"; // 基於那個平臺? 咱們使用網易
    public static String username = "sqczdx@163.com"; // 郵箱 改成你的
    public static String password = "q7w8e9a4s5d6"; // 受權碼(登陸郵箱-->設置-->郵箱安全設置-->客戶端受權密碼),這裏不是郵箱的密碼,切記!
    public static String from = "sqczdx@163.com"; // 來源郵箱,改爲你的帳號

    /**
     * 發送郵箱方法
     * @param to 接收者郵箱
     * @param subject 郵箱內容
     * @param text 郵箱標題
     * @throws Exception
     */
    public static void sendMail(String to, String subject, String text) throws Exception {
        // 1 準備發送郵件須要的參數
        Properties props = new Properties();
        // 設置主機地址 smtp.qq.com smtp.126.com smtp.163.com
        props.put("mail.smtp.host", smtp_host);
        // 是否打開驗證:只能設置true,必須打開
        props.put("mail.smtp.auth", true);
        // 2 鏈接郵件服務器
        Session session = Session.getDefaultInstance(props);
        // 3 建立郵件信息
        MimeMessage message = new MimeMessage(session);
        // 4 設置發送者
        InternetAddress fromAddress = new InternetAddress(from);
        message.setFrom(fromAddress);
        // 5 設置接收者
        InternetAddress toAddress = new InternetAddress(to);
        // to:直接接收者 cc:抄送 bcc暗送
        message.setRecipient(RecipientType.TO, toAddress);
        // 6 設置主題
        message.setSubject(subject);
        // 7 設置正文
        message.setText(text);

        // 設置HTML方式發送
        //message.setContent(text, "text/html;charset=utf-8");

        // 8 發送:麼麼噠
        Transport transport = session.getTransport("smtp");// 參數不能少,表示的是發送協議
        // 登陸郵箱,此處的密碼是受權碼
        transport.connect(username, password);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        System.out.println("ok");
    }

    /**
     * 測試main方法
     * 這樣在別的類中也能夠調用了,一行代碼便可
     * @param args
     */
    public static void main(String[] args) {
        try {
            MailUtil.sendMail("550945825@qq.com", "麼麼噠", "測試標題");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

謝謝你的點贊

相關文章
相關標籤/搜索