Java调用网易163邮箱,发送邮件
Java調(diào)用網(wǎng)易163郵箱,發(fā)送郵件
Java調(diào)用163郵箱發(fā)送郵件,大概分為兩部分:
1.創(chuàng)建郵件信息,包括標(biāo)題,內(nèi)容等
2.創(chuàng)建郵件郵件鏈接,發(fā)送郵件
一、創(chuàng)建郵件鏈接
1.首先要有163郵箱的賬號。
2. 在郵箱設(shè)置中查找smtp服務(wù)器地址,需要開啟smtp服務(wù)。這個是固定的,不需要修改。
網(wǎng)易163郵箱的 SMTP 服務(wù)器地址為: smtp.163.com
3.發(fā)送郵件,建議使用授權(quán)碼(有的郵箱叫 獨(dú)立密碼),確保郵箱密碼的安全性。授權(quán)碼在郵箱設(shè)置中進(jìn)行設(shè)置。如果開啟了授權(quán)碼,發(fā)送郵件的時候,必須使用授權(quán)碼。
這里設(shè)置開啟smtp服務(wù)和授權(quán)碼。我這里已經(jīng)是設(shè)置好的。
POM文件依賴:
代碼如下:
@Component public class EmailNotofication {// 發(fā)件人的 郵箱 和 密碼/授權(quán)碼// PS: 某些郵箱服務(wù)器為了增加郵箱本身密碼的安全性,給 SMTP 客戶端設(shè)置了獨(dú)立密碼(有的郵箱稱為“授權(quán)碼”)// 對于開啟了獨(dú)立密碼的郵箱, 這里的郵箱密碼必需使用這個獨(dú)立密碼(授權(quán)碼)。private static String myEmailAccount = "發(fā)件人郵箱賬號";private static String myEmailPassword = "授權(quán)碼";// 發(fā)件人郵箱的 SMTP 服務(wù)器地址, 可在郵箱設(shè)置中查找,需要開啟smtp服務(wù)// 網(wǎng)易163郵箱的 SMTP 服務(wù)器地址為: smtp.163.comprivate static String smtp = "smtp.163.com";// 收件人郵箱private static String receiveMailAccount = "收件人郵箱賬號";/*** 發(fā)送郵件** @param emailContent*/public void senEmail(String emailContent) {try {// 1. 創(chuàng)建參數(shù)配置, 用于連接郵件服務(wù)器的參數(shù)配置Properties props = new Properties();// 使用的協(xié)議(JavaMail規(guī)范要求)props.setProperty("mail.transport.protocol", "smtp");// 發(fā)件人的郵箱的 SMTP 服務(wù)器地址props.setProperty("mail.smtp.host", smtp);// 需要請求認(rèn)證props.setProperty("mail.smtp.auth", "true");// 2. 根據(jù)配置創(chuàng)建會話對象, 用于和郵件服務(wù)器交互Session session = Session.getInstance(props);// 設(shè)置為debug模式, 可以查看詳細(xì)的發(fā)送 logsession.setDebug(true);// 3. 創(chuàng)建一封郵件 session、發(fā)件人、收件人、郵件內(nèi)容MimeMessage message = createMimeMessage(session, myEmailAccount, receiveMailAccount, emailContent);// 4. 根據(jù) Session 獲取郵件傳輸對象Transport transport = session.getTransport();// 5. 使用 郵箱賬號 和 密碼/授權(quán)碼 連接郵件服務(wù)器, 這里認(rèn)證的郵箱必須與 message 中的發(fā)件人郵箱一致, 否則報錯transport.connect(myEmailAccount, myEmailPassword);// 6. 發(fā)送郵件, 發(fā)到所有的收件地址, message.getAllRecipients() 獲取到的是在創(chuàng)建郵件對象時添加的所有收件人, 抄送人, 密送人transport.sendMessage(message, message.getAllRecipients());// 7. 關(guān)閉連接transport.close();} catch (Exception e) {log.info("發(fā)送郵件失敗:{}", e.getMessage());}}二、創(chuàng)建一封簡單的郵件。
ps:需要設(shè)置發(fā)件人、收件人、編碼格式、郵件主題和內(nèi)容。
代碼如下:
/*** 創(chuàng)建郵件** @param session* @param myEmailAccount* @param receiveMailAccount* @param message* @return*/private MimeMessage createMimeMessage(Session session, String myEmailAccount, String receiveMailAccount, String message) {try {// 1. 創(chuàng)建一封郵件MimeMessage mimeMessage = new MimeMessage(session);// 2. From: 發(fā)件人 emailUserName、昵稱、編碼格式mimeMessage.setFrom(new InternetAddress(myEmailAccount, "發(fā)件人名稱", "UTF-8"));// 3. To: 收件人(可以增加多個收件人)mimeMessage.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMailAccount, "收件人名稱", "UTF-8"));//多個收件人/**String[] split = receiveMailAccount.split(",");for(int i = 0; i < split.length; i++){mimeMessage.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress(split[i]));}*/// 4. Subject: 郵件主題mimeMessage.setSubject("郵件主題", "UTF-8");// 5. Content: 郵件正文(可以使用html標(biāo)簽)mimeMessage.setContent(message, "text/html;charset=UTF-8");// 6. 設(shè)置發(fā)件時間mimeMessage.setSentDate(new Date());// 7. 保存設(shè)置mimeMessage.saveChanges();return mimeMessage;} catch (Exception e) {log.info("創(chuàng)建郵件失敗:{}",e.getMessage());}return null;} }如果遇到退信問題,錯誤:554 DT:SPM ,此錯誤為判定你的郵件為垃圾郵件。提交申請等待一會即可(xxxx為你的郵箱):
https://feedback.mail.126.com/antispam/complain.php?user=xxxx
總結(jié)
以上是生活随笔為你收集整理的Java调用网易163邮箱,发送邮件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 千里达v1000时速_重新定义性价比 千
- 下一篇: 如何利用百度知道推广网站