package test;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import javax.activation.*;
import java.io.*;
public class SendMail {
??? private MimeMessage mimeMsg; //MIME郵件對象
??? private Session session; //郵件會話對象
??? private Properties props; //系統屬性
??? private boolean needAuth = false; //smtp是否需要認證
??? private String username = ""; //smtp認證用戶名和密碼
??? private String password = "";
??? private Multipart mp; //Multipart對象,郵件內容,標題,附件等內容均添加到其中后再生成MimeMessage對象
??? /**
*
*/
??? public SendMail() {
??????? setSmtpHost("stmp.mail.daphne.com.cn"); //如果沒有指定郵件服務器,就從getConfig類中獲取
??????? createMimeMessage();
??? }
??? public SendMail(String smtp) {
??????? setSmtpHost(smtp);
??????? createMimeMessage();
??? }
??? /**
* @param hostName String
*/
??? public void setSmtpHost(String hostName) {
??????? System.out.println("設置系統屬性:mail.smtp.host = " + hostName);
??????? if (props == null)
??????????? props = System.getProperties(); //獲得系統屬性對象
??????? props.put("mail.smtp.host", hostName); //設置SMTP主機
??? }
??? /**
* @return boolean
*/
??? public void createMimeMessage() {
??????? try {
??????????? System.out.println("準備獲取郵件會話對象!");
??????????? session = Session.getDefaultInstance(props, null); //獲得郵件會話對象
??????? } catch (Exception e) {
??????????? System.err.println("獲取郵件會話對象時發生錯誤!" + e);
?????????? // return false;
??????? }
??????? System.out.println("準備創建MIME郵件對象!");
??????? try {
??????????? mimeMsg = new MimeMessage(session); //創建MIME郵件對象
??????????? mp = new MimeMultipart();
????????? //? return true;
??????? } catch (Exception e) {
??????????? System.err.println("創建MIME郵件對象失??!" + e);
????????? //? return false;
??????? }
??? }
??? /**
* @param need boolean
*/
??? public void setNeedAuth(boolean need) {
??????? System.out.println("設置smtp身份認證:mail.smtp.auth = " + need);
??????? if (props == null)
??????????? props = System.getProperties();
??????? if (need) {
??????????? props.put("mail.smtp.auth", "true");
??????? } else {
??????????? props.put("mail.smtp.auth", "false");
??????? }
??? }
??? /**
* @param name String
* @param pass String
*/
??? public void setNamePass(String name, String pass) {
??????? username = name;
??????? password = pass;
??? }
??? /**
* @param mailSubject String
* @return boolean
*/
??? public boolean setSubject(String mailSubject) {
??????? System.out.println("設置郵件主題!");
??????? try {
??????????? mimeMsg.setSubject(mailSubject);
??????????? return true;
??????? } catch (Exception e) {
??????????? System.err.println("設置郵件主題發生錯誤!");
??????????? return false;
??????? }
??? }
??? /**
* @param mailBody String
*/
??? public boolean setBody(String mailBody) {
??????? try {
??????????? BodyPart bp = new MimeBodyPart();
??????????? bp.setContent("" + mailBody, "text/html;charset=GB2312");
??????????? mp.addBodyPart(bp);
??????????? return true;
??????? } catch (Exception e) {
??????????? System.err.println("設置郵件正文時發生錯誤!" + e);
??????????? return false;
??????? }
??? }
??? /**
* @param name String
* @param pass String
*/
??? public boolean addFileAffix(String filename) {
??????? System.out.println("增加郵件附件:" + filename);
??????? try {
??????????? BodyPart bp = new MimeBodyPart();
??????????? FileDataSource fileds = new FileDataSource(filename);
??????????? bp.setDataHandler(new DataHandler(fileds));
??????????? bp.setFileName(fileds.getName());
??????????? mp.addBodyPart(bp);
??????????? return true;
??????? } catch (Exception e) {
??????????? System.err.println("增加郵件附件:" + filename + "發生錯誤!" + e);
??????????? return false;
??????? }
??? }
??? /**
* @param name String
* @param pass String
*/
??? public boolean setFrom(String from) {
??????? System.out.println("設置發信人!");
??????? try {
??????????? mimeMsg.setFrom(new InternetAddress(from)); //設置發信人
??????????? return true;
??????? } catch (Exception e) {
??????????? return false;
??????? }
??? }
??? /**
* @param name String
* @param pass String
*/
??? public boolean setTo(String to) {
??????? if (to == null)
??????????? return false;
??????? try {
??????????? mimeMsg.setRecipients(Message.RecipientType.TO,
????????????????????????????????? InternetAddress.parse(to));
??????????? return true;
??????? } catch (Exception e) {
??????????? return false;
??????? }
??? }
??? /**
* @param name String
* @param pass String
*/
??? public boolean setCopyTo(String copyto) {
??????? if (copyto == null)
??????????? return false;
??????? try {
??????????? mimeMsg.setRecipients(Message.RecipientType.CC,
????????????????????????????????? (Address[])InternetAddress.parse(copyto));
??????????? return true;
??????? } catch (Exception e) {
??????????? return false;
??????? }
??? }
??? /**
* @param name String
* @param pass String
*/
??? public boolean sendout() {
??????? try {
??????????? mimeMsg.setContent(mp);
??????????? mimeMsg.saveChanges();
??????????? System.out.println("正在發送郵件....");
??????????? Session mailSession = Session.getInstance(props, null);
??????????? Transport transport = mailSession.getTransport("smtp");
??????????? transport.connect((String)props.get("mail.smtp.host"), username,
????????????????????????????? password);
??????????? transport.sendMessage(mimeMsg,
????????????????????????????????? mimeMsg.getRecipients(Message.RecipientType.TO));
??????????? //transport.send(mimeMsg);
??????????? System.out.println("發送郵件成功!");
??????????? transport.close();
??????????? return true;
??????? } catch (Exception e) {
??????????? System.err.println("郵件發送失??!" + e);
??????????? return false;
??????? }
??? }
??? /**
* Just do it as this
*/
??? public static void main(String[] args) {
??????? String mailbody = "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+
??????? "<div align=center><a href=http://www.131ok.com> 搜索 </a></div>";
??????? SendMail themail = new SendMail("mail.daphne.com.cn");
??????? themail.setNeedAuth(true);
??????? if (themail.setSubject("標題") == false)
??????????? return;
??????? if(themail.setBody(mailbody) == false) return;
??????? if(themail.setTo("
wanglei@mail.daphne.com.cn
") == false) return;
?????
??????? if (themail.setFrom("
kemi@mail.daphne.com.cn
") == false)
??????????? return;
??????? if (themail.addFileAffix("C:\\anchor.gif") == false)
??????????? return;
??????? themail.setNamePass("kemi", "q123ew");
??????? if (themail.sendout() == false)
??????????? return;
??? }
}