天天看點

用java實作發送郵箱 以qq郵箱為例

1.0 開發環境

  • 開發工具 idea
  • 額外jar包 mail.jar

jar包的maven位址

<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
    <dependency >
      <groupId >com.sun.mail </groupId >
      <artifactId >javax.mail </artifactId >
      <version >1.5.4 </version >
    </dependency >
           

代碼如下:

package com.ccut.base.util;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * Created by admin on 2018/6/24.
 */
public class SendMail {
    public SendMail(){
        //做連結前的準備工作  也就是參數初始化
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host","smtp.qq.com");//發送郵箱伺服器
        properties.setProperty("mail.smtp.port","465");//發送端口
        properties.setProperty("mail.smtp.auth","true");//是否開啟權限控制
        properties.setProperty("mail.debug","true");//true 列印資訊到控制台
        properties.setProperty("mail.transport","smtp");//發送的協定是簡單的郵件傳輸協定
        properties.setProperty("mail.smtp.ssl.enable","true");
        //建立兩點之間的連結
        System.out.println("執行了2");
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("[email protected]","xxxxxdfda");
            }
        });
        System.out.println("執行了3");
        //建立郵件對象
        Message message = new MimeMessage(session);
        //設定發件人
        try {
            message.setFrom(new InternetAddress("[email protected]"));

        //設定收件人
        message.setRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]"));//收件人
        //設定主題
        message.setSubject("驗證碼");
        //設定郵件正文  第二個參數是郵件發送的類型
        message.setContent("2569658","text/html;charset=UTF-8");
        //發送一封郵件
            Transport transport = session.getTransport();
            transport.connect("[email protected]","xxxxxda");
            Transport.send(message);
            System.out.println("執行了");
    } catch (MessagingException e) {
        e.printStackTrace();
    }finally {

        }

    }

    public static void main(String[] args) {
        System.out.println("執行了1");
        SendMail SendMail = new SendMail();
    }
}
           

大多數代碼看注釋就可以看懂了

但是要注意我們發送的賬戶要去郵箱開啟

POP3/SMTP服務

步驟我們以qq為例

看圖就行了

用java實作發送郵箱 以qq郵箱為例

然後

用java實作發送郵箱 以qq郵箱為例

開啟服務

用java實作發送郵箱 以qq郵箱為例

發送短信

用java實作發送郵箱 以qq郵箱為例

然後會給你一個授權碼 這就相當于你的登入密碼

也就是上述xxxxxdfda 地方換成響應的授權碼 這樣就可以不用擔心密碼洩露的問題了

關于即使填了授權碼也報535錯誤的原因可能是網絡問題,我遇見過,莫名其妙就好了。。。。。我也不知道為啥

上面的問題今天又遇見了,最終知道了原因 就是短時間内你發送了大量的郵件 導緻的 是以過5分鐘左右你在發送就好了 這個應該是qq郵箱的問題