通過JMail發送郵件例子

m4ed 9年前發布 | 1K 次閱讀 Java

import java.util.Date;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.SendFailedException; 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 sun.misc.BASE64Encoder;

public class MailSend {

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 = new MimeMultipart(); //Multipart對象,郵件內容,標題,附件等內容均添加到其中后再生成MimeMessage對象

public MailSend() {
    try {
        //  System.out.println("設置系統屬性:mail.smtp.host = "+"mail.tplife.com");
        if (props == null) {
            props = System.getProperties(); //獲得系統屬性對象
        }
        props.put("mail.smtp.host", "mail.tplife.com"); //設置SMTP主機
        //  System.out.println("準備獲取郵件會話對象!");
        session = Session.getDefaultInstance(props, null); //獲得郵件會話對象
        mimeMsg = new MimeMessage(session); //創建MIME郵件對象
    } catch (Exception e) {
        System.err.println("郵件初始化失敗!" + e);
    }
}

public void setSubject(String sub) {
    try {
        mimeMsg.setSubject(sub, "GB2312");
        //   System.out.println("設置郵件標題為:" + sub + ".");
    } catch (Exception e) {
        System.err.println("郵件標題設置失敗!" + e);
    }
}

public void setContent(String text, String type) {
    try {
        BodyPart bp = new MimeBodyPart();
        bp.setContent(text, type);
        mp.addBodyPart(bp);
        //   System.out.println("正在設置郵件內容");
    } catch (Exception e) {
        System.err.println("郵件內容設置失敗!" + e);
    }
}

public void setText(String text) {
    try {
        BodyPart bp = new MimeBodyPart();
        bp.setText(text);
        mp.addBodyPart(bp);
        //  System.out.println("正在設置郵件內容");
    } catch (Exception e) {
        System.err.println("郵件內容設置失敗!" + e);
    }
}

public void addAttach(String AttachURL) {
    try {
        //添加附件
        BodyPart bp = new MimeBodyPart();
        BASE64Encoder enc = new BASE64Encoder();//解決附件名亂碼問題
        FileDataSource fileds = new FileDataSource(AttachURL);
        bp.setDataHandler(new DataHandler(fileds));
        bp.setFileName("=?GBK?B?" + enc.encode((fileds.getName()).getBytes()) + "?=");
        //  System.out.println("增加郵件附件:" + fileds.getName());
        mp.addBodyPart(bp);
    } catch (Exception e) {
        System.err.println("郵件附件粘貼失敗!" + e);
    }
}

public void clearAttach() {
    try {
        int n = mp.getCount();
        System.out.println();
        for (int i = 0; i <= n - 1; i++) {
            mp.removeBodyPart(0);
        }
        mimeMsg.setContent(mp);
        mimeMsg.saveChanges();
    } catch (Exception e) {
        System.err.println("清除附件失敗!" + e);
    }
}

public void setFrom(String address) {
    try {
        mimeMsg.setFrom(new InternetAddress(address)); //設置發信人
        //   System.out.println("正在設置發件人地址");
    } catch (Exception e) {
        System.err.println("郵件發件人地址設置失敗!" + e);
    }
}

public void setRecipients(String address) {
    try {
        mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(address)); //收信人
        //  System.out.println("正在設置收件人地址");
    } catch (Exception e) {
        System.err.println("郵件收件人地址設置失敗!" + e);
    }
}

public void setRecipients(String[] address, String type) {
    try {
        Address[] add = new Address[address.length];
        if (address.length - 1 >= 0) {
            for (int i = 0; i <= address.length - 1; i++) {
                add[i] = new InternetAddress(address[i]);
            }
            if (type == null)
                type = "TO";
            if (type == "TO")
                mimeMsg.setRecipients(Message.RecipientType.TO, add);
            else if (type == "CC")
                mimeMsg.setRecipients(Message.RecipientType.CC, add);
            else if (type == "BCC")
                mimeMsg.setRecipients(Message.RecipientType.BCC, add);//收信人
            else
                System.out.println("類型不正確!");
            /// System.out.println("正在設置收件人地址");
        }
    } catch (Exception e) {
        System.err.println("郵件收件人地址設置失敗!" + e);
    }
}

public void setSentDate() {
    try {
        mimeMsg.setSentDate(new Date());
    } catch (Exception e) {
        System.err.println("時間設置失敗!" + e);
    }
}

public boolean sendMail() {
    boolean flag = false;
    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));
        System.out.println("發送郵件成功!");
        transport.close();
        flag = true;
    } catch (SendFailedException e1) {
        System.err.println("郵件發送失敗SendFailed!" + e1);
        return false;

    } catch (MessagingException e2) {
        System.err.println("郵件發送失敗Messaging!" + e2);
        return false;

    } catch (Exception e3) {
        System.err.println("郵件發送失敗!" + e3);
        return false;
    }

    return flag;
}

public static void main(String argv[]) {

    MailSend ms = new MailSend();
    ms.setSubject("");
    ms.setText("");
    ms.setFrom("liumin3@tplife.com");
    Vector TO = new Vector();
    TO.add("liumin3@tplife.com");
    TO.add("liumin3@tplife.com");
    ms.setRecipients((String[]) TO.toArray(), "TO");
    ms.setSentDate();
    ms.sendMail();

}

}</pre>

 本文由用戶 m4ed 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!