Java 发邮件实例小项目(群发邮件+多附件)



用Java写的一个发邮件的东东(群发+多附件)。没什么好玩的了,最近看到好多地方有发邮件的东东,正好在看Java,就用Java写了,需要下载mail.jar和activation.jar,此外,用到我前次写的操作XML文件的一个类(上篇文章),好了,不多说了,代码贴贴,怎么用就看自己了:

//JavaMail中一些我们需要的类 //1.Properties
// //JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如:
// //Properties props = new Properties (); //props.put(“mail.smtp.host”, “smtp.xxxx.com”);//可以换上你的smtp主机名,就像你在OutLook中设置smtp主机名一样。
//props.put(“mail.smtp.auth”, “true”); //通过验证 // //2.Session
// //所有的基于JavaMail的程序都至少需要一个或全部的对话目标。 // //Session session = Session.getInstance(props, null); // //3.MimeMessage
// //信息对象将把你所发送的邮件真实的反映出来。 // //MimeMessage msg = new MimeMessage(session); // //4.Transport // //邮件的发送是由Transport来完成的:
// //Transport.send(msg);

import java.awt.List; import java.net.MalformedURLException; import java.util.Date; import java.util.Properties;

import javax.activation.DataHandler; import javax.activation.FileDataSource; 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 org.dom4j.DocumentException;

/* * Created on 2005-4-14 21:27:16 * */

/** * @author zxub *  */ public class MailSender {

String host; String userName; String password; String from; String to; String subject; String body;

String fileName;

// 用于保存发送附件的文件名列表 List arrFileName = new List();


public MailSender(String to, String subject, String body)    throws MalformedURLException, DocumentException {   //初始化发件人、收件人、主题等   OperaXML OX = new OperaXML();   this.from = OX.getNodeValue(“config.xml”, “config/Host1/From”);   this.host = OX.getNodeValue(“config.xml”, “config/Host1/SmtpHost”);   this.userName = OX.getNodeValue(“config.xml”, “config/Host1/UserName”);   this.password = OX.getNodeValue(“config.xml”, “config/Host1/Password”);

this.to = to;   this.subject =subject;   this.body = body; }

// 用于收集附件名 public void attachFile(String fileName) {   this.arrFileName.add(fileName); }

// 开始发送 public boolean startSend() {

//创建Properties对象   Properties props = System.getProperties();   //创建信件服务器   props.put(“mail.smtp.host”, this.host);   props.put(“mail.smtp.auth”, “true”); //通过验证   //得到默认的对话对象   Session session = Session.getDefaultInstance(props, null);   try {    //创建一个消息,并初始化该消息的各项元素    MimeMessage msg = new MimeMessage(session);    msg.setFrom(new InternetAddress(this.from));    if (this.to.trim().length() > 0) {     String[] arr = this.to.split(“,”);     //int ReceiverCount=1;     int receiverCount = arr.length;     if (receiverCount > 0) {      InternetAddress[] address = new InternetAddress[receiverCount];      for (int i = 0; i < receiverCount; i++) {       address[i] = new InternetAddress(arr[i]);      }      msg.addRecipients(Message.RecipientType.TO, address);     } else {      System.out        .println(“None receiver! The program will be exit!”);      System.exit(0);     }    } else {     System.out.println(“None receiver! The program will be exit!”);     System.exit(0);    }    msg.setSubject(subject);    //后面的BodyPart将加入到此处创建的Multipart中    Multipart mp = new MimeMultipart();         //获取附件    int FileCount = this.arrFileName.getItemCount();    if (FileCount > 0) {     for (int i = 0; i < FileCount; i++) {      MimeBodyPart mbp = new MimeBodyPart();          //选择出附件名      fileName = arrFileName.getItem(i).toString();      //得到数据源      FileDataSource fds = new FileDataSource(fileName);      //得到附件本身并至入BodyPart      mbp.setDataHandler(new DataHandler(fds));      //得到文件名同样至入BodyPart      mbp.setFileName(fds.getName());      mp.addBodyPart(mbp);     }     MimeBodyPart mbp = new MimeBodyPart();     mbp.setText(this.body);     mp.addBodyPart(mbp);     //移走集合中的所有元素     arrFileName.removeAll();     //Multipart加入到信件     msg.setContent(mp);    } else {     //设置邮件正文     msg.setText(this.body);    }    //设置信件头的发送日期    msg.setSentDate(new Date());    msg.saveChanges();    //发送信件    Transport transport = session.getTransport(“smtp”);    transport.connect(this.host, this.userName, this.password);    transport.sendMessage(msg, msg      .getRecipients(Message.RecipientType.TO));    transport.close();   } catch (MessagingException mex) {    mex.printStackTrace();    Exception ex = null;    if ((ex = mex.getNextException()) != null) {     ex.printStackTrace();    }    return false;   }   return true; }

public static void main(String[] args) {

try {    MailSender sendmail = new MailSender(“邮箱地址1,邮箱地址2“,      “邮件主题“, “邮件内容“);    sendmail.attachFile(“E://eclipse//workspace//MailSender//MailSender.rar”);//附件地址    //sendmail.attachFile(“附件2地址”);………………..    sendmail.startSend();    System.out.println(“OK”);   } catch (Exception e) {    e.printStackTrace();   }

} }