java代碼如何群發(fā)qq郵件
不少做技術(shù)的都不喜歡用常用的郵件群發(fā)軟件去發(fā)郵件,那么,今天一米軟件就來給大家分享一下java代碼如何群發(fā)qq郵件。
java代碼群發(fā)qq郵件注意事項:
純java開發(fā)的話,JDK1.6以外,需要導(dǎo)入這里自己打包的mail.jar.另外前三個類必須放同一包中。當(dāng)然如果是javaEE,你完全不用擔(dān)心了,直接建類復(fù)制,或者下載用都行)。
第一個類 : 郵件發(fā)送類
package com.crt.settlement.service.test;
import java.util.Properties;
/**
* 郵件發(fā)送類
*
*/
public class MailSenderInfo {
// 發(fā)送郵件的服務(wù)器的IP(或主機(jī)地址)
private String mailServerHost;
// 發(fā)送郵件的服務(wù)器的端口
private String mailServerPort;
// 發(fā)件人郵箱地址
private String fromAddress;
// 收件人郵箱地址
private String toAddress;
// 登陸郵件發(fā)送服務(wù)器的用戶名
private String userName;
// 登陸郵件發(fā)送服務(wù)器的密碼
private String password;
// 是否需要身份驗證
private boolean validate = false;
// 郵件主題
private String subject;
// 郵件的文本內(nèi)容
private String content;
// 郵件附件的文件名
private String[] attachFileNames;
public Properties getProperties() {
Properties p = new Properties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
//設(shè)置是否安全驗證,默認(rèn)為false,一般情況都設(shè)置為true
p.put("mail.smtp.auth", validate ? "true" : "false");
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(String[] fileNames) {
this.attachFileNames = fileNames;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
}
第二個類 : 發(fā)送郵件類
package com.crt.settlement.service.test;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
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;
/**
* 發(fā)送郵件的類
*
*
*/
public class SimpleMailSender {
public boolean sendTextMail(MailSenderInfo mailInfo) {
// 判斷是否需要身份認(rèn)證
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()) {
// 如果需要身份認(rèn)證,則創(chuàng)建一個密碼驗證器
QQ 郵箱通過生成授權(quán)碼來設(shè)置密碼:
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根據(jù)郵件會話屬性和密碼驗證器構(gòu)造一個發(fā)送郵件的session
Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
try {
// 根據(jù)session創(chuàng)建一個郵件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 創(chuàng)建郵件發(fā)送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 設(shè)置郵件消息的發(fā)送者
mailMessage.setFrom(from);
// 創(chuàng)建郵件的接收者地址,并設(shè)置到郵件消息中
// 發(fā)送給多人
String toList = getMailList(mailInfo.getToAddress().split(","));
InternetAddress[] iaToList = new InternetAddress().parse(toList);
// Message.RecipientType.TO屬性表示接收者的類型為TO
mailMessage.setRecipients(Message.RecipientType.TO, iaToList);
// 設(shè)置郵件消息的主題
mailMessage.setSubject(mailInfo.getSubject());
// 設(shè)置郵件消息發(fā)送的時間
mailMessage.setSentDate(new Date());
// 設(shè)置郵件消息的主要內(nèi)容
String mailContent = mailInfo.getContent();
mailMessage.setText(mailContent);
mailMessage.saveChanges();
// 發(fā)送郵件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
public static boolean sendHtmlMail(MailSenderInfo mailInfo) {
// 判斷是否需要身份認(rèn)證
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
// 如果需要身份認(rèn)證,則創(chuàng)建一個密碼驗證器
if (mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根據(jù)郵件會話屬性和密碼驗證器構(gòu)造一個發(fā)送郵件的session
Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
try {
// 根據(jù)session創(chuàng)建一個郵件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 創(chuàng)建郵件發(fā)送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 設(shè)置郵件消息的發(fā)送者
mailMessage.setFrom(from);
// 創(chuàng)建郵件的接收者地址,并設(shè)置到郵件消息中
// 發(fā)送給多人
String toList = getMailList(mailInfo.getToAddress().split(","));
InternetAddress[] iaToList = new InternetAddress().parse(toList);
// Message.RecipientType.TO屬性表示接收者的類型為TO
mailMessage.setRecipients(Message.RecipientType.TO, iaToList);
// 設(shè)置郵件消息的主題
mailMessage.setSubject(mailInfo.getSubject());
// 設(shè)置郵件消息發(fā)送的時間
mailMessage.setSentDate(new Date());
// MiniMultipart類是一個容器類,包含MimeBodyPart類型的對象
Multipart mainPart = new MimeMultipart();
// 創(chuàng)建一個包含HTML內(nèi)容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 設(shè)置HTML內(nèi)容
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 將MiniMultipart對象設(shè)置為郵件內(nèi)容
mailMessage.setContent(mainPart);
mailMessage.saveChanges();
// 發(fā)送郵件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
private static String getMailList(String[] mailArray) {
StringBuffer toList = new StringBuffer();
int length = mailArray.length;
if (mailArray != null && length < 2) {
toList.append(mailArray[0]);
} else {
for (int i = 0; i < length; i++) {
toList.append(mailArray[i]);
if (i != (length - 1)) {
toList.append(",");
}
}
}
return toList.toString();
}
}
第三個類 : 郵件認(rèn)證器
package com.crt.settlement.service.test;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
* 郵件用戶名和密碼認(rèn)證器
*
*/
public class MyAuthenticator extends Authenticator{
String userName = null;
String password = null;
public MyAuthenticator() {
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password);
}
}
第四個類 : 測試類:
需要注意,當(dāng)中需要自己修改的地方都已經(jīng)做了配置,值的一提的事:
服務(wù)器的ip和port是在網(wǎng)上可以輕松查到的,您需要用什么郵箱發(fā),就設(shè)置成對應(yīng)郵箱的服務(wù)器。
發(fā)郵件別用剛申請的郵箱,一般剛申請的郵箱是不會給你這個權(quán)限的,要不就是需要綁定,要不就是有一定期限。建議測試時用自己已經(jīng)用過很久的qq郵箱或者163等其他郵箱。
對于使用qq郵箱發(fā)送,需要在QQ郵箱中進(jìn)行如下設(shè)置上的更改:在登錄QQ郵箱后臺在"設(shè)置"=》賬號中開啟POP3/SMTP服務(wù)
QQ 郵箱通過生成授權(quán)碼來設(shè)置密碼
package com.crt.settlement.service.test;
/**
* 設(shè)置數(shù)據(jù),開始發(fā)送
*
*/
public class SendMailDemo {
public static void main(String[] args) {
// 設(shè)置郵件服務(wù)器信息
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("smtp.qq.com");// 發(fā)送郵件的服務(wù)器的IP(或主機(jī)地址)
mailInfo.setMailServerPort("587");
// mailInfo.setMailServerHost("smtp.163.com");// 發(fā)送郵件的163服務(wù)器的IP(或主機(jī)地址)
// mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
// 郵箱用戶名(根據(jù)自己情況設(shè)置)
mailInfo.setUserName("91***01183@qq.com");
// 郵箱密碼(根據(jù)自己情況設(shè)置)(注意此處密碼為授權(quán)碼)
mailInfo.setPassword("rueqjpdgcvrgbbje");
// 發(fā)件人郵箱(根據(jù)自己情況設(shè)置,如果你沒對郵箱進(jìn)行特別設(shè)置,應(yīng)該和郵箱用戶名一致)
mailInfo.setFromAddress("91***01183@qq.com");
// 收件人郵箱(根據(jù)自己情況設(shè)置)
//設(shè)置為發(fā)送給多人
mailInfo.setToAddress("xidahuanghui@163.com,7633434534@qq.com");
// 郵件標(biāo)題
mailInfo.setSubject("測試Java發(fā)送郵件");
// 郵件內(nèi)容
StringBuffer buffer = new StringBuffer();
buffer.append("地址:");
buffer.append("測試測試測試");
mailInfo.setContent(buffer.toString());
// 發(fā)送郵件
SimpleMailSender sms = new SimpleMailSender();
// 發(fā)送文體格式
sms.sendTextMail(mailInfo);
// 發(fā)送html格式
SimpleMailSender.sendHtmlMail(mailInfo);
System.out.println("郵件發(fā)送完畢");
}
}
-
做好網(wǎng)站內(nèi)容營銷的三個密訣關(guān)鍵
隨著網(wǎng)絡(luò)變得有越來越多的資訊和廣告,你要怎么從中脫穎而出? 其實(shí)就是采取內(nèi)容營銷!從原本干擾式...
2017-08-01 13:44:27 閱讀:4096 #網(wǎng)絡(luò)營銷#
-
做好內(nèi)容營銷的三個密訣關(guān)鍵上
隨著網(wǎng)絡(luò)變得有越來越多的資訊和廣告,你要怎么從中脫穎而出? 其實(shí)就是采取內(nèi)容營銷!從原本干擾式...
2017-08-04 14:50:32 閱讀:4202 #網(wǎng)絡(luò)營銷#
-
營銷軟件表態(tài):三招讓你的博客會賺錢
很多時候,有人會跟我說:「要在網(wǎng)絡(luò)賺錢對我來說根本是不可能的,我沒有專業(yè),我肯定是不行的。」 ...
2017-08-14 15:57:56 閱讀:4006 #網(wǎng)絡(luò)營銷#
熱門推薦
- 1怎么利用Facebook賺錢閱讀:6497
- 2電子郵件營銷的策略 閱讀:5908
- 3郵箱群發(fā)不進(jìn)垃圾箱閱讀:6593
- 4群發(fā)郵箱平臺哪個好 閱讀:6002
- 5郵件推廣中的具體營銷步驟閱讀:6111
- 6如何群發(fā)郵件但不被發(fā)現(xiàn)閱讀:7186
- 7群發(fā)郵件如何不屏蔽閱讀:4481
- 8郵件如何群發(fā)多個不同的人閱讀:4613
- 9哪個郵箱群發(fā)效果好閱讀:4404
- 10如何群發(fā)郵件閱讀:4625
- 11電子郵件的營銷方法 閱讀:4391
- 12電子郵件雜志營銷 閱讀:4387
- 13電子郵件廣告樣式閱讀:4479
- 14郵件批量發(fā)送軟件 閱讀:4665
- 15外貿(mào)郵件群發(fā)閱讀:4341
- 16哪個郵箱群發(fā)效果好閱讀:4285
- 17郵件推廣的技巧閱讀:4534
- 18郵件如何群發(fā)閱讀:4289
- 19facebook 怎么增加好友閱讀:4476
- 20如何可以群發(fā)郵件 閱讀:4515
- 21郵件廣告投放渠道有哪些閱讀:4895
- 22批量群發(fā)郵件 閱讀:4426
- 23怎么發(fā)廣告郵件閱讀:4716
- 24郵件批量發(fā)送系統(tǒng)使用方法閱讀:4352
- 25群發(fā)郵件數(shù)量限制閱讀:5078
- 26批量發(fā)送個性化郵件閱讀:4496
- 27郵件怎么群發(fā)給很多人閱讀:4280
- 28如何自動發(fā)廣告郵件閱讀:4707
- 29如何群發(fā)郵件閱讀:76792
- 30郵件如何發(fā)給多人閱讀:77368
標(biāo)簽更多+