一、郵件開發的相關協議
SMTP : Simple Message Transfer Protocal 也就是發送協議;默認端口是25
POP:Post Office Protocal 字面翻譯是郵局協議,也就是接收協議,默認端口是110
二、郵件發送接收的過程
三、準備工作
1.申請郵箱,我這裏申請的是網易郵箱,接着登錄,在設置裏開通POP3/SMTP服務,開通這兩個服務後纔可以在第三方發送接收郵件
2.啓用客戶端授權碼,用以第三方登錄連接網易服務器
四、編寫代碼
public class TestMail {
public static void main(String[] args) throws Exception {
Properties props = new Properties(); //創建Properties對象,用於存放key-value
props.put("mail.smtp.host", "smtp.163.com"); //指定郵件發送服務器地址
props.put("mail.smtp.auth", "true"); //服務器是否需要驗證用戶的身份信息
Session session = Session.getInstance(props); //得到session
session.setDebug(true); //代表啓用debug模式,可以在控制檯輸出SMTP協議應答的過程
//創建一個MimeMessage格式的郵件
MimeMessage message = new MimeMessage(session);
//設置郵件的發送者,Address是抽象類,找子類創建對象
Address fromAddress = new InternetAddress("[email protected]"); //郵件地址
message.setFrom(fromAddress); //設置發件箱
//設置郵件的接收者
Address toAddress = new InternetAddress("[email protected]"); //郵件地址
message.setRecipient(RecipientType.TO, toAddress); //設置接收者地址
//設置郵件的信息
message.setSubject("新年快樂"); //郵件主題
message.setText("朋友,元旦已到,願你快樂"); //郵件內容
//保存郵件
message.saveChanges();
//得到發送郵件的通道
Transport transport = session.getTransport("smtp"); //傳入發送協議
//通道鏈接到服務器
transport.connect("smtp.163.com", "[email protected]", "dirkzh00");
//通道發送
transport.sendMessage(message, message.getAllRecipients());
//關閉通道
transport.close();
}
}
五、發送郵件
1.控制檯打印相關信息
2.發送郵件成功
寫在最後:
需要注意的地方:一定要開通POP/SMTP服務;然後獲取第三方登錄的授權碼;另外如果你是網易郵箱給QQ郵箱發消息,QQ郵箱默認是垃圾郵件,需要你在垃圾箱重拾一下,之後便可以了;還有就是如果你想用QQ郵箱做服務端,開通那兩個服務會有點麻煩。我只試了網易和QQ這兩個郵箱,你可以多試試,有問題添加微信DirkZhouzlw。
謝謝你的閱讀,朋友。