import java.io.*;
創(chuàng)新互聯(lián)是一家專業(yè)提供融安企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為融安眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
import java.util.*;
import java.util.Date;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class sendMail {
private MimeMessage mimeMsg; //MIME郵件對象
private Session session; //郵件會話對象
private Properties props; //系統(tǒng)屬性
private boolean needAuth = false; //smtp是否需要認(rèn)證
private String username = ""; //smtp認(rèn)證用戶名和密碼
private String password = "";
private Multipart mp; //Multipart對象,郵件內(nèi)容,標(biāo)題,附件等內(nèi)容均添加到其中后再生成MimeMessage對象
/**
*
*/
public sendMail() {
//setSmtpHost(getConfig.mailHost);//如果沒有指定郵件服務(wù)器,就從getConfig類中獲取
createMimeMessage();
}
public sendMail(String smtp){
setSmtpHost(smtp);
createMimeMessage();
}
/**
* @param hostName String
*/
public void setSmtpHost(String hostName) {
System.out.println("設(shè)置系統(tǒng)屬性:mail.smtp.host = "+hostName);
if(props == null)props = System.getProperties(); //獲得系統(tǒng)屬性對象
props.put("mail.smtp.host",hostName); //設(shè)置SMTP主機
}
/**
* @return boolean
*/
public boolean createMimeMessage()
{
try{
System.out.println("準(zhǔn)備獲取郵件會話對象!");
session = Session.getDefaultInstance(props,null); //獲得郵件會話對象
}
catch(Exception e){
System.err.println("獲取郵件會話對象時發(fā)生錯誤!"+e);
return false;
}
System.out.println("準(zhǔn)備創(chuàng)建MIME郵件對象!");
try{
mimeMsg = new MimeMessage(session); //創(chuàng)建MIME郵件對象
mp = new MimeMultipart();
return true;
}
catch(Exception e){
System.err.println("創(chuàng)建MIME郵件對象失?。?+e);
return false;
}
}
實現(xiàn)java發(fā)送郵件的過程大體有以下幾步:
準(zhǔn)備一個properties文件,該文件中存放SMTP服務(wù)器地址等參數(shù)。
利用properties創(chuàng)建一個Session對象
利用Session創(chuàng)建Message對象,然后設(shè)置郵件主題和正文
利用Transport對象發(fā)送郵件
需要的jar有2個:activation.jar和mail.jar發(fā)送附件,需要用到Multipart對象。
import?java.io.File;
import?java.io.IOException;
import?java.io.InputStream;
import?java.util.Properties;
import?javax.activation.DataHandler;
import?javax.activation.DataSource;
import?javax.activation.FileDataSource;
import?javax.mail.BodyPart;
import?javax.mail.Message;
import?javax.mail.MessagingException;
import?javax.mail.Multipart;
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?JavaMailWithAttachment?{
private?MimeMessage?message;
private?Session?session;
private?Transport?transport;
private?String?mailHost?=?"";
private?String?sender_username?=?"";
private?String?sender_password?=?"";
private?Properties?properties?=?new?Properties();
/*
*?初始化方法
*/
public?JavaMailWithAttachment(boolean?debug)?{
InputStream?in?=?JavaMailWithAttachment.class.getResourceAsStream("MailServer.properties");
try?{
properties.load(in);
this.mailHost?=?properties.getProperty("mail.smtp.host");
this.sender_username?=?properties.getProperty("mail.sender.username");
this.sender_password?=?properties.getProperty("mail.sender.password");
}?catch?(IOException?e)?{
e.printStackTrace();
}
session?=?Session.getInstance(properties);
session.setDebug(debug);//?開啟后有調(diào)試信息
message?=?new?MimeMessage(session);
}
/**
*?發(fā)送郵件
*?
*?@param?subject
*????????????郵件主題
*?@param?sendHtml
*????????????郵件內(nèi)容
*?@param?receiveUser
*????????????收件人地址
*?@param?attachment
*????????????附件
*/
public?void?doSendHtmlEmail(String?subject,?String?sendHtml,?String?receiveUser,?File?attachment)?{
try?{
//?發(fā)件人
InternetAddress?from?=?new?InternetAddress(sender_username);
message.setFrom(from);
//?收件人
InternetAddress?to?=?new?InternetAddress(receiveUser);
message.setRecipient(Message.RecipientType.TO,?to);
//?郵件主題
message.setSubject(subject);
//?向multipart對象中添加郵件的各個部分內(nèi)容,包括文本內(nèi)容和附件
Multipart?multipart?=?new?MimeMultipart();
//?添加郵件正文
BodyPart?contentPart?=?new?MimeBodyPart();
contentPart.setContent(sendHtml,?"text/html;charset=UTF-8");
multipart.addBodyPart(contentPart);
//?添加附件的內(nèi)容
if?(attachment?!=?null)?{
BodyPart?attachmentBodyPart?=?new?MimeBodyPart();
DataSource?source?=?new?FileDataSource(attachment);
attachmentBodyPart.setDataHandler(new?DataHandler(source));
//?網(wǎng)上流傳的解決文件名亂碼的方法,其實用MimeUtility.encodeWord就可以很方便的搞定
//?這里很重要,通過下面的Base64編碼的轉(zhuǎn)換可以保證你的中文附件標(biāo)題名在發(fā)送時不會變成亂碼
//sun.misc.BASE64Encoder?enc?=?new?sun.misc.BASE64Encoder();
//messageBodyPart.setFileName("=?GBK?B?"?+?enc.encode(attachment.getName().getBytes())?+?"?=");
//MimeUtility.encodeWord可以避免文件名亂碼
attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
multipart.addBodyPart(attachmentBodyPart);
}
//?將multipart對象放到message中
message.setContent(multipart);
//?保存郵件
message.saveChanges();
transport?=?session.getTransport("smtp");
//?smtp驗證,就是你用來發(fā)郵件的郵箱用戶名密碼
transport.connect(mailHost,?sender_username,?sender_password);
//?發(fā)送
transport.sendMessage(message,?message.getAllRecipients());
System.out.println("send?success!");
}?catch?(Exception?e)?{
e.printStackTrace();
}?finally?{
if?(transport?!=?null)?{
try?{
transport.close();
}?catch?(MessagingException?e)?{
e.printStackTrace();
}
}
}
}
public?static?void?main(String[]?args)?{
JavaMailWithAttachment?se?=?new?JavaMailWithAttachment(true);
File?affix?=?new?File("c:\\測試-test.txt");
se.doSendHtmlEmail("郵件主題",?"郵件內(nèi)容",?"xxx@XXX.com",?affix);//
}
}
首先下載 JavaMail jar 包,并導(dǎo)入到項目中。下載地址
編寫代碼,代碼如下:
import?javax.mail.Authenticator;
import?javax.mail.Message;
import?javax.mail.MessagingException;
import?javax.mail.PasswordAuthentication;
import?javax.mail.Session;
import?javax.mail.Transport;
import?javax.mail.internet.AddressException;
import?javax.mail.internet.InternetAddress;
import?javax.mail.internet.MimeMessage;
public?class?App45?{
public?static?void?main(String[]?args)?throws?AddressException,?MessagingException?{
Properties?properties?=?System.getProperties();
properties.setProperty("mail.smtp.host",?"郵件發(fā)送服務(wù)器");
properties.setProperty("mail.smtp.auth",?"true");
Session?session?=?Session.getDefaultInstance(properties,?new?Authenticator()?{
@Override
protected?PasswordAuthentication?getPasswordAuthentication()?{
//?設(shè)置發(fā)件人郵件帳號和密碼
return?new?PasswordAuthentication("郵件帳號",?"密碼");
}
});
MimeMessage?message?=?new?MimeMessage(session);
//?設(shè)置發(fā)件人郵件地址
message.setFrom(new?InternetAddress("發(fā)件人郵件地址"));
//?設(shè)置收件人郵件地址
message.addRecipient(Message.RecipientType.TO,?new?InternetAddress("收件人郵件地址"));
message.setSubject("這里是郵件主題。");
message.setText("這里是郵件內(nèi)容。");
Transport.send(message);
}
}
方法:
1.前提準(zhǔn)備工作:
首先,郵件的發(fā)送方要開啟POP3 和SMTP服務(wù)--即發(fā)送qq郵件的賬號要開啟POP3 和SMTP服務(wù)
2.開啟方法:
登陸qq郵箱
3.點擊 設(shè)置
4.點擊—-賬戶
5.找到:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù) —點擊開啟
6.送短信 —–點擊確定
7.稍等一會,很得到一個授權(quán)碼! –注意:這個一定要記住,一會用到
8.點擊保存修改 —OK 完成
9.java 測試代碼:
package cn.cupcat.test;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
public class SendmailUtil {
public static void main(String[] args) throws AddressException, MessagingException {
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 連接協(xié)議
properties.put("mail.smtp.host", "smtp.qq.com");// 主機名
properties.put("mail.smtp.port", 465);// 端口號
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");//設(shè)置是否使用ssl安全連接 ---一般都使用
properties.put("mail.debug", "true");//設(shè)置是否顯示debug信息 true 會在控制臺顯示相關(guān)信息
//得到回話對象
Session session = Session.getInstance(properties);
// 獲取郵件對象
Message message = new MimeMessage(session);
//設(shè)置發(fā)件人郵箱地址
message.setFrom(new InternetAddress("123456789@qq.com"));
//設(shè)置收件人地址 message.setRecipients( RecipientType.TO, new InternetAddress[] { new InternetAddress("987654321@qq.com") });
//設(shè)置郵件標(biāo)題
message.setSubject("這是第一封Java郵件");
//設(shè)置郵件內(nèi)容
message.setText("內(nèi)容為: 這是第一封java發(fā)送來的郵件。");
//得到郵差對象
Transport transport = session.getTransport();
//連接自己的郵箱賬戶
transport.connect("123456789@qq.com", "vvctybgbvvophjcj");//密碼為剛才得到的授權(quán)碼
//發(fā)送郵件 transport.sendMessage(message, message.getAllRecipients());
}
}
10.運行就會發(fā)出郵件了。。。。
下面是我收到郵件的截圖,當(dāng)然我把源碼中的郵件地址都是修改了,不是真實的,你們測試的時候,可以修改能你們自己的郵箱。最后,祝你也能成功,如果有什么問題,可以一起討論!
注意事項
得到的授權(quán)碼一定要保存好,程序中要使用
JAVA郵件發(fā)送的大致過程是這樣的的:
1、構(gòu)建一個繼承自javax.mail.Authenticator的具體類,并重寫里面的getPasswordAuthentication()方法。此類是用作登錄校驗的,以確保你對該郵箱有發(fā)送郵件的權(quán)利。
2、構(gòu)建一個properties文件,該文件中存放SMTP服務(wù)器地址等參數(shù)。
3、通過構(gòu)建的properties文件和javax.mail.Authenticator具體類來創(chuàng)建一個javax.mail.Session。Session的創(chuàng)建,就相當(dāng)于登錄郵箱一樣。剩下的自然就是新建郵件。
4、構(gòu)建郵件內(nèi)容,一般是javax.mail.internet.MimeMessage對象,并指定發(fā)送人,收信人,主題,內(nèi)容等等。
5、使用javax.mail.Transport工具類發(fā)送郵件。
網(wǎng)站題目:java郵件代碼,javamail發(fā)送郵件
本文URL:http://chinadenli.net/article26/dsshjcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站收錄、微信公眾號、微信小程序、建站公司、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)