之前学习的java后台实现的邮件的简单代码与大家分享一下,欢迎拍砖!
也没有时间仔细整理,大概使用到的包包括:
代码示例如下:
package com.mail.impl;
import java.util.ArrayList;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
* java邮件发送实现类
* @author
* 2014-04-22
* 1.通过addTo(地址)方法增加多个发送地址
* 2.通过addCopy()方法增加多个抄送地址
* 3,通过addBcc()方法增加多个暗送地址
*/
public class Mailer {
protected Session session; /*javamail session对象*/
protected String fromadd; //发送地址
protected String subject; //邮件标题
protected ArrayList tolist = new ArrayList(); //存放字符串形式的收信地址
protected ArrayList copylist = new ArrayList(); //存放抄送地址
protected ArrayList bcclist = new ArrayList(); //存放暗送地址
protected String body; //存放信的内容
protected String mailhost; //SMTP服务器地址
protected boolean verbose = true; //是否打印控制台
protected String username;//邮箱用户名
protected String pwd;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getFromadd() {
return fromadd;
}
public void setFromadd(String fromadd) {
this.fromadd = fromadd;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public ArrayList getTolist() {
return tolist;
}
public void setTolist(ArrayList tolist) {
this.tolist = tolist;
}
public void setTolist(String s) {
this.tolist = tokenize(s);
}
public void addTo(String to){
this.tolist.add(to);
}
public ArrayList getCopylist() {
return copylist;
}
public void setCopylist(ArrayList copylist) {
this.copylist = copylist;
}
public void setCopylist(String s){
this.copylist = tokenize(s);
}
public void addCopy(String s){
this.copylist.add(s);
}
public ArrayList getBcclist() {
return bcclist;
}
public void setBcclist(ArrayList bcclist) {
this.bcclist = bcclist;
}
public void setBcclist(String s){
this.bcclist = tokenize(s);
}
public void addBcc(String s){
this.bcclist.add(s);
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public boolean isVerbose() {
return verbose;
}
public void setVerbose(boolean verbose) {
this.verbose = verbose;
}
public void setServer(String s) {
mailhost = s;
}
public boolean isComplie(){
if(fromadd == null ||fromadd.length() == 0){
System.err.println("doSend: no fromadd");
return false;
}
if(subject == null || subject.length() == 0){
System.err.println("doSend: no subject");
return false;
}
if(tolist.size() == 0){
System.err.println("doSend: no tolist");
return false;
}
if(body == null || body.length() == 0){
System.err.println("doSend: no body");
return false;
}
if(mailhost.length() == 0 || mailhost == null){
System.err.println("doSend: no mailhost");
return false;
}
return true;
}
public synchronized void doSend(){
if(!isComplie()){
throw new IllegalArgumentException("doSend Message is no Complie");
}
Properties pro = new Properties();
pro.setProperty("mail.smtp.host", mailhost);
pro.setProperty("mail.smtp.auth", "true");
if(session == null){
session = Session.getDefaultInstance(pro);
}
if(verbose){
session.setDebug(true);
}
final Message message = new MimeMessage(session);
InternetAddress[] addresses;
try {
addresses = new InternetAddress[tolist.size()];
for(int i=0;i<addresses.length;i++){
addresses[i] = new InternetAddress((String)tolist.get(i));
}
message.setRecipients(Message.RecipientType.TO, addresses);
message.setFrom(new InternetAddress(fromadd));
addresses = new InternetAddress[copylist.size()];
for(int i=0;i<addresses.length;i++){
addresses[i] = new InternetAddress((String)copylist.get(i));
}
message.setRecipients(Message.RecipientType.CC, addresses);
addresses = new InternetAddress[bcclist.size()];
for(int i=0;i<addresses.length;i++){
addresses[i] = new InternetAddress((String)bcclist.get(i));
}
message.setRecipients(Message.RecipientType.BCC, addresses);
message.setSubject(subject);
message.setText(body);
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new Thread(){
public void run(){
Transport trans;
try {
trans = session.getTransport("smtp");
trans.connect(mailhost, username, pwd);
trans.sendMessage(message, message.getAllRecipients());
} catch (NoSuchProviderException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
protected ArrayList tokenize(String s){
ArrayList arr = new ArrayList();
StringTokenizer tokenizer = new StringTokenizer(s,",");
while(tokenizer.hasMoreTokens()){
arr.add(tokenizer.nextToken().trim());
}
return arr;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Mailer mail = new Mailer();
mail.setServer("smtp.163.com");
mail.setFromadd("xxx@163.com");
mail.setUsername("xxxxx");
mail.setPwd("xxxxx");
mail.addTo("xxxxxx@qq.com");
mail.setSubject("java mail");
mail.setBody("Test Java Client Mail Send Program");
mail.doSend();
}
}