【Java】使用smtp和pop3協議,實現郵件收發

使用到的包: javax.mail-1.5.1.jar

  • 發郵件的時候
    - 向運維: 維護服務器linux
    - 索要:
    - smtp服務器地址, smtp.163.com
    - 發送郵件的端口號: 默認25
    - 發件人的賬號和密碼

郵件發送封裝庫代碼

import java.util.Properties;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendJEmail {
    /*
    * 拷貝代碼直接將下面四個屬性改成自己的就可以了
    * */
    static final String smtphost = "smtp.163.com";  // 發送郵件的服務商
    static final String from = ""; 				// 郵件發送人的郵件地址
    static final String username = "";  	//發件人的郵件帳戶
    static final String password = "";   					//發件人的郵件密碼
    
    public static boolean sendMail(String email, String emailMsg) {
        String to = email; 										// 郵件接收人的郵件地址
        
        //定義Properties對象,設置環境信息
        Properties props = System.getProperties();

        //設置郵件服務器的地址
        props.setProperty("mail.smtp.host", smtphost); // 指定的smtp服務器
        props.setProperty("mail.smtp.auth", "true");
        props.setProperty("mail.transport.protocol", "smtp");//設置發送郵件使用的協議
        //創建Session對象,session對象表示整個郵件的環境信息
        Session session = Session.getInstance(props);
        //設置輸出調試信息
        session.setDebug(true);
        try {
            //Message的實例對象表示一封電子郵件
            MimeMessage message = new MimeMessage(session);
            //設置發件人的地址
            message.setFrom(new InternetAddress(from));
            //設置主題
            message.setSubject("用戶激活");
            //設置郵件的文本內容
            //message.setText("Welcome to JavaMail World!");
            message.setContent((emailMsg),"text/html;charset=utf-8");

            //設置附件
            //message.setDataHandler(dh);

            //從session的環境中獲取發送郵件的對象
            Transport transport=session.getTransport();
            //連接郵件服務器
            transport.connect(smtphost,25, username, password);
            //設置收件人地址,併發送消息
            transport.sendMessage(message,new Address[]{new InternetAddress(to)});
            transport.close();
            return true;
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
    }
}

以上代碼實現後, 直接在service層, 在註冊成功之後,調用發送郵件認證類

String link = "http://localhost:8080/BookStore1_war_exploded/active?activeCode=" + user.getActiveCode();
String html = "<a href="+ link +">這裏填寫激活賬號的提示語句</a>";
SendJEmail.sendMail(user.getEmail(), html);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章