利用Java發(fā)送郵件的實(shí)現(xiàn)代碼
前言
大家請(qǐng)注意:以下代碼使用的測(cè)試郵箱為126的郵箱,實(shí)測(cè)可用,注意,個(gè)人測(cè)試時(shí),注意發(fā)送的郵件內(nèi)容,郵件內(nèi)容郵箱服務(wù)器審查較嚴(yán)格,少有不慎就會(huì)被判定為垃圾郵件,進(jìn)而就會(huì)給你返回一個(gè)錯(cuò)誤碼:
實(shí)例代碼
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
public class SendMailUtil {
private static final String USERNAME = "用戶(hù)名"; // 發(fā)送人的用戶(hù)名
private static final String PASSWORD = "密碼"; // 發(fā)送郵件人的密碼
private static final String HOSTNAME = "smtp.126.com"; // smtp服務(wù)器地址
private static final String FROMADDRESS = USERNAME + "@126.com"; // 發(fā)件人郵箱
private static final String FROMUSERNAME = "CNCD-碼上中國(guó)博客"; // 發(fā)件人姓名,可隨意寫(xiě)
private static final String EMAILTITLE = "碼上中國(guó)博客"; // 郵件標(biāo)題
private static final String EMAILCONTENT = "歡迎使用 CNCD-碼上中國(guó)博客激活郵件 ,請(qǐng)點(diǎn)擊右側(cè)鏈接完成賬號(hào)激活:\n";// 郵件內(nèi)容
public static void main(String[] args) {
try {
sendEmail("825338623@qq.com", "用戶(hù)名:guopengfei,密碼:guopengfei");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 發(fā)送郵件
* @param sendAddress 要發(fā)送的郵箱地址
* @param content 發(fā)送的內(nèi)容
* @throws Exception
*/
public static void sendEmail(String sendAddress, String content)
throws Exception {
// 創(chuàng)建一個(gè)連接屬性。
Properties props = new Properties(); //
props.put("mail.smtp.host ", HOSTNAME); // 設(shè)置smtp的服務(wù)器地址是smtp.126.com
props.put("mail.smtp.auth", "true"); // 設(shè)置smtp服務(wù)器要身份驗(yàn)證。
props.put("mail.transport.protocol", "stmp");
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD);
}
});
Message message = new MimeMessage(session);
InternetAddress from = new InternetAddress(FROMADDRESS); // 發(fā)送人地址
from.setPersonal(MimeUtility.encodeText(FROMUSERNAME)); // 發(fā)件人名
message.setFrom(from);
// InternetAddress to = new InternetAddress("taozhida11@sina.cn");
// //收件人地址
// 創(chuàng)建郵件體:
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(sendAddress));// 抄送給多個(gè)人的郵箱
// message.setRecipient(Message.RecipientType.TO, to); // 只有抄送給自己的郵箱
message.setSubject(MimeUtility.encodeText(EMAILTITLE)); // 郵件標(biāo)題
message.setSentDate(new Date());
MimeMultipart msgMultipart = new MimeMultipart("mixed");// 指定為混合關(guān)系
message.setContent(msgMultipart);
// 郵件內(nèi)容
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(
"<body><div style='width: 1000px;height: 300px;margin: 0px auto;margin-bottom:20px;border:1px solid #92B0DD;background-color: #FFFFFf;'><h3>這是系統(tǒng)自動(dòng)發(fā)送的郵件,請(qǐng)勿回復(fù)!</h3><br/>"+
content+"</div></body>",
"text/html;charset=UTF-8");
// TODO 組裝的順序非常重要,一定要先組裝文本域,再組裝文件
msgMultipart.addBodyPart(htmlPart);
// 組裝附件
// MimeBodyPart file = new MimeBodyPart();
// FileDataSource file_datasource = new FileDataSource(
// "D:\\report_data2.txt");
// DataHandler dh = new DataHandler(file_datasource);
// file.setDataHandler(dh);
// // 附件區(qū)別內(nèi)嵌內(nèi)容的一個(gè)特點(diǎn)是有文件名,為防止中文亂碼要編碼
// file.setFileName(MimeUtility.encodeText(dh.getName()));
// msgMultipart.addBodyPart(file);
message.saveChanges();
// 發(fā)送郵件的過(guò)程:95188
Transport transport = session.getTransport("smtp"); // 創(chuàng)建連接
transport.connect(HOSTNAME, 25, USERNAME, PASSWORD); // 連接服務(wù)器
// 服務(wù)名,端口,發(fā)送郵件用戶(hù)名
// (不要@后面),密碼
transport.sendMessage(message, message.getAllRecipients()); // 發(fā)送信息
transport.close(); // 關(guān)閉
System.out.println("發(fā)送完畢");
}
}
注意,首次使用本代碼的朋友們,建議除了用戶(hù)名和密碼換成自己的,其余的最好先不要改,否則很容易被網(wǎng)易郵箱判定為垃圾郵件而不給發(fā)送,一般判定為垃圾郵件時(shí),網(wǎng)易返回的錯(cuò)誤碼如下:
com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 126 smtp2,DMmowACXoTzMk8VXVdKnEA--.1778S2 1472566222,please see http://mail.163.com/help/help_spam_16.htm?ip=117.114.147.13&hostid=smtp2&time=1472566222 at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829) at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1634) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:889) at SendMailUtil.sendEmail(SendMailUtil.java:88) at SendMailUtil.main(SendMailUtil.java:29)
意思是說(shuō),讓你前往錯(cuò)誤返回碼中的鏈接里查看幫助信息,你可以進(jìn)入鏈接,發(fā)現(xiàn),就有上述554的錯(cuò)誤碼代表的意思。這種情況一般就是被判定為垃圾郵件了。
其次,測(cè)試時(shí)不要頻繁運(yùn)行(發(fā)送)上述代碼中的郵件,太頻繁了,也容易判定為垃圾郵件。好了,以上就是這篇文章的全部?jī)?nèi)容了,希望對(duì)大家的學(xué)習(xí)和工作能有所幫助。
- 談?wù)勗贘ava發(fā)送郵件中遇到的的問(wèn)題
- Java郵件發(fā)送程序(可以同時(shí)發(fā)給多個(gè)地址、可以帶附件)
- java中javamail發(fā)送帶附件的郵件實(shí)現(xiàn)方法
- java 發(fā)送郵件的實(shí)例代碼(可移植)
- Java基于JavaMail實(shí)現(xiàn)向QQ郵箱發(fā)送郵件
- Java Mail與Apache Mail發(fā)送郵件示例
- java發(fā)送郵件的具體實(shí)現(xiàn)
- java實(shí)現(xiàn)基于SMTP發(fā)送郵件的方法
- java編程實(shí)現(xiàn)郵件定時(shí)發(fā)送的方法
- java實(shí)現(xiàn)163郵箱發(fā)送郵件到qq郵箱成功案例
相關(guān)文章
在SpringBoot中使用@Value注解來(lái)設(shè)置默認(rèn)值的方法
Spring Boot提供了一種使用注解設(shè)置默認(rèn)值的方式,即使用 @Value 注解,下面這篇文章主要給大家介紹了關(guān)于如何在SpringBoot中使用@Value注解來(lái)設(shè)置默認(rèn)值的相關(guān)資料,需要的朋友可以參考下2023-10-10
深入理解Java class文件格式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
對(duì)于理解JVM和深入理解Java語(yǔ)言, 學(xué)習(xí)并了解class文件的格式都是必須要掌握的功課2017-06-06
如何使用Idea搭建全注解式開(kāi)發(fā)的SpringMVC項(xiàng)目
這篇文章主要介紹了如何使用Idea搭建全注解式開(kāi)發(fā)的SpringMVC項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
基于Java編寫(xiě)一個(gè)簡(jiǎn)單的風(fēng)控組件
這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫(xiě)一個(gè)簡(jiǎn)單的風(fēng)控組件,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下2022-12-12

