十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這是我的連續(xù)發(fā)幾封郵件的代碼。連續(xù)發(fā)是為了163郵箱的積分,^_^。你可以參考下。
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為綏化企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站建設(shè),綏化網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
package com.test;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class SendEmail extends Authenticator {
public static final String mailuser = "xianlaioy"; // 需要你的郵箱帳號(hào)(僅@符號(hào)前面的)
public static final String password = "######"; // 需要你的郵箱密碼
private Properties props;
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(mailuser, password);
}
public SendEmail(){
props = new Properties();
InputStream is = null;
try {
/*當(dāng)部署在web容器中時(shí),路徑要修改
* Thread.currentThread().getContextClassLoader().getResource("").getPath();
* 得到的url是web容器中的項(xiàng)目下的class路徑
**/
is = new FileInputStream("src/sendemail.properties");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
props.load(is);
} catch (IOException e) {
e.printStackTrace();
}
}
/** email為接收郵箱,text為郵件正文
* @throws IOException */
public void sendEamils(String email, String text) throws IOException {
Transport transport = null;
try {
props.setProperty("mail.smtp.host", props.getProperty("mail.smtp.host"));
props.setProperty("mail.smtp.auth", props.getProperty("mail.smtp.auth"));
SendEmail auth = new SendEmail();
javax.mail.Session session = javax.mail.Session.getDefaultInstance(props,
auth);
MimeMessage message = new MimeMessage(session);
Address addressFrom = new InternetAddress(SendEmail.mailuser
+ "@163.com", "歐陽(yáng)");
Address addressTo = new InternetAddress(email, "xianlai");
message.setText(text);
message.setSubject("郵件標(biāo)題");
message.setFrom(addressFrom);
message.addRecipient(Message.RecipientType.TO, addressTo);
message.saveChanges();
transport = session.getTransport("smtp");
session.setDebug(true);
/*transport.connect("smtp.126.com", SendEmail.mailuser,
SendEmail.password);*/
transport.send(message);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} finally {
if (transport != null) {
try {
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
Timer t = new Timer();
long delay =2*60*1000;
t.schedule(new TimerTask(){
private int count=0;
private SendEmail se=new SendEmail();//作為成員變量就只會(huì)創(chuàng)建一個(gè)SendEmail對(duì)象。
public void run() {
//在timer的run中就必須考慮好怎樣或者什么時(shí)候退出的問題。
//這里是用count計(jì)數(shù)的方法來考慮退出的問題的。
if(count++1){
int i=10;
for (int j = 0; j i; j++) {
try {
se.sendEamils("xianlaioy@126.com","test"+j );
} catch (IOException e) {
e.printStackTrace();
}
}
}else {
this.cancel();
System.exit(0);
}
}}, 2000,delay);
}
}
for(int i=1;i=a.length();i++)
{
d=a.substring(i-1,i);
if(d.equals("@."))
{
return false;
}
}
這個(gè)循環(huán)判定完是有@.返回false不對(duì)的,用判定"@."是否存在好一些
if(!a.contains("@."))
{
return false;
}
public boolean mainto()
{
boolean flag = true;
//建立郵件會(huì)話
Properties pro = new Properties();
pro.put("mail.smtp.host","smtp.qq.com");//存儲(chǔ)發(fā)送郵件的服務(wù)器
pro.put("mail.smtp.auth","true"); //通過服務(wù)器驗(yàn)證
Session s =Session.getInstance(pro); //根據(jù)屬性新建一個(gè)郵件會(huì)話
//s.setDebug(true);
//由郵件會(huì)話新建一個(gè)消息對(duì)象
MimeMessage message = new MimeMessage(s);
//設(shè)置郵件
InternetAddress fromAddr = null;
InternetAddress toAddr = null;
try
{
fromAddr = new InternetAddress(451144426+"@qq.com"); //郵件發(fā)送地址
message.setFrom(fromAddr); //設(shè)置發(fā)送地址
toAddr = new InternetAddress("12345367@qq.com"); //郵件接收地址
message.setRecipient(Message.RecipientType.TO, toAddr); //設(shè)置接收地址
message.setSubject(title); //設(shè)置郵件標(biāo)題
message.setText(content); //設(shè)置郵件正文
message.setSentDate(new Date()); //設(shè)置郵件日期
message.saveChanges(); //保存郵件更改信息
Transport transport = s.getTransport("smtp");
transport.connect("smtp.qq.com", "451144426", "密碼"); //服務(wù)器地址,郵箱賬號(hào),郵箱密碼
transport.sendMessage(message, message.getAllRecipients()); //發(fā)送郵件
transport.close();//關(guān)閉
}
catch (Exception e)
{
e.printStackTrace();
flag = false;//發(fā)送失敗
}
return flag;
}
這是一個(gè)javaMail的郵件發(fā)送代碼,需要一個(gè)mail.jar
剛好我也在學(xué)習(xí),網(wǎng)上找了些:
郵件群發(fā):
收件人的地址設(shè)置為tomail+i的形式,利用For循環(huán)向這些地址發(fā)送郵件,以實(shí)現(xiàn)群發(fā)的目的。
利用Address類設(shè)置郵件信息的收件人和發(fā)件人信息,在創(chuàng)建了郵件地址類后,通過message的setFrom()方法設(shè)置郵件的發(fā)件人,代碼如下:
message.setFrom(from_mail);
設(shè)置收件人地址時(shí)使用setRecipient()方法設(shè)置收信人地址,代碼如下:
message.setRecipient(type,address);
參數(shù)type為收件人類型。可以使用以下3個(gè)常量來區(qū)分收件人的類型:
1)Message.RecipientType.TO--發(fā)送。
2)Message.RecipientType.CC--抄送。
3)Message.RecipientType.BCC--暗送。
實(shí)現(xiàn)過程:
%@ page import="java.io.*"%
%@ page import="java.util.*"%
%@ page import="javax.mail.*"%
%@ page import="javax.mail.internet.*"%
%@ page import="javax.activation.*"%
%
try{
int i = 1;
for(i=1;i4;i++){
request.setCharacterEncoding("gb2312");
String from = request.getParameter("from_mail");
String to = request.getParameter("tomail"+i);
String subject = request.getParameter("subject");
String messageText = request.getParameter("message");
String password = request.getParameter("password");
String S = request.getParameter("from_mail");
int n = S.indexOf('@');
int m = S.length();
String server = S.substring(n+1,m);
//建立郵件會(huì)話
Properties pro = new Properties();
pro.put("mail.smtp.host","smtp."+server);
pro.put("mail.smtp.auth","true");
Session sess = Session.getInstance(pro);
sess.setDebug(true);
MimeMessage message = new MimeMessage(sess);//新建一個(gè)消息對(duì)象
InternetAddress from_mail = new InternetAddress(from);//設(shè)置發(fā)件人
message.setFrom(from_mail);
//設(shè)置收件人
InternetAddress to = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO,to_mail);
message.setSubject(subject);//設(shè)置主題
message.setText(messageText);//設(shè)置內(nèi)容
message.setSentDate(new Date());//設(shè)置發(fā)送時(shí)間
message.saveChanges();//保存郵件信息
Transport transport = sess.getTransport("smtp");
transport.connect("smtp."+server,from,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
if(i==3){
out.print("發(fā)送郵件成功");
}
}
}catch(Exception e){
out.print("發(fā)送郵件失敗,原因可能是ul");
out.println(e.getMessage());
}
%
感謝網(wǎng)友:s214205
寫一個(gè)boolean方法,遍歷bailbox,若未發(fā)現(xiàn)@則返回false。然后在while循環(huán)中調(diào)用該方法。