Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.digiwin.utils;
- import java.util.Date;
- import javax.mail.Message;
- import javax.mail.MessagingException;
- import javax.mail.Multipart;
- import javax.mail.Transport;
- import javax.mail.internet.AddressException;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeBodyPart;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeMultipart;
- public class DWMailUtils {
- private static final String MAIL_MIME_CHARSET = "utf8";
- private static final String CONTENT_CHARSET = "text/html; charset=utf8";
- /**
- * 同步寄信功能
- *
- * @param sender-寄件者
- * @param receiver-收件者
- * @param ccList-CC
- * @param smtpHost-伺服器位置
- * @param port-port
- * @param username-使用者名稱(登入郵件伺服器)
- * @param passwd-密碼(登入郵件伺服器)
- * @param subject-標題
- * @param content-內容
- * @param typeOfConnection-連線種類0:TLS,1:SSL
- * @return
- * @throws Exception
- */
- public static boolean doSendMail(String sender, String receiver, String ccList, String bccList, String smtpHost, int port, String username, String passwd, String subject, String content, Integer typeOfConnection) throws Exception {
- Transport transport = null;
- sender = username;// 因為通常寄件者與登入郵件系統帳密是同一組,先固定住以避免額外錯誤,有應用需求再修改掉,sender 的入參是保留此彈性
- try {
- // encoding
- System.setProperty("mail.mime.charset", MAIL_MIME_CHARSET);
- // properties
- java.util.Properties props = setProperties(typeOfConnection, smtpHost, port);
- // construct a mail session
- javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props, null);
- mailSession.setDebug(false);
- // Message msg = new MimeMessage(mailSession);
- Message msg = setMsgInfo(mailSession, sender, receiver, ccList, bccList, subject, content);
- if (typeOfConnection == 0) {
- transport = mailSession.getTransport("smtp"); //回傳假的instance
- } else {
- transport = mailSession.getTransport("smtps");
- }
- transport.connect(smtpHost, username, passwd);
- transport.sendMessage(msg, msg.getAllRecipients());
- return true;
- } catch (Exception e) { ///Exception 要測到
- e.printStackTrace();
- return false;
- } finally {
- closeTransport(transport);
- }
- }
- private static void closeTransport(Transport transport) throws MessagingException {
- if (transport != null) {
- transport.close();
- }
- }
- private static Message setMsgInfo(javax.mail.Session mailSession, String sender, String receiver, String ccList, String bccList, String subject, String content) throws AddressException, MessagingException {
- Message msg = new MimeMessage(mailSession);
- // mail sender
- msg.setFrom(new InternetAddress(sender));
- // mail recievers
- InternetAddress[] address = InternetAddress.parse(receiver, false);
- msg.setRecipients(Message.RecipientType.TO, address);
- // mail cc
- if (ccList != null && !ccList.equals("")) {
- msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(ccList));
- }
- // bcc測試中
- if (bccList != null && !bccList.equals("")) {
- msg.addRecipients(Message.RecipientType.BCC, InternetAddress.parse(bccList));
- }
- // mail's subject
- msg.setSubject(subject);
- // mail's sending time
- msg.setSentDate(new Date());
- MimeBodyPart mbp = new MimeBodyPart();
- // mail's charset
- mbp.setContent(content, CONTENT_CHARSET);
- Multipart mp = new MimeMultipart();
- mp.addBodyPart(mbp);
- msg.setContent(mp);
- return msg;
- }
- private static java.util.Properties setProperties(int typeOfConnection, String smtpHost, int port) {
- java.util.Properties props = null;
- switch (typeOfConnection) {
- case 1: // TLS
- props = getPropertyInTls(smtpHost, port);
- break;
- case 2: // SSL
- props = getPropertyInSsl(smtpHost, port);
- break;
- default:
- props = getPropertyInNormalConnection(smtpHost, port);
- break;
- }
- return props;
- }
- private static java.util.Properties getPropertyInNormalConnection(String smtpHost, int port) {
- java.util.Properties props = new java.util.Properties();
- props.put("mail.host", smtpHost);
- props.put("mail.transport.protocol", "smtp");
- props.put("mail.smtp.port", port);
- props.put("mail.smtp.auth", "true");
- return props;
- }
- private static java.util.Properties getPropertyInTls(String smtpHost, int port) {
- java.util.Properties props = new java.util.Properties();
- props.put("mail.host", smtpHost);
- props.put("mail.smtp.auth", "true");
- props.put("mail.smtp.starttls.enable", "true");
- props.put("mail.smtp.port", port);
- return props;
- }
- private static java.util.Properties getPropertyInSsl(String smtpHost, int port) {
- java.util.Properties props = new java.util.Properties();
- props.put("mail.host", smtpHost);
- props.put("mail.smtps.auth", "true");
- props.put("mail.smtps.port", port);
- props.put("mail.smtps.socketFactory.port", port);
- props.put("mail.smtps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
- props.put("mail.smtps.socketFactory.fallback", "true");
- props.put("mail.smtps.ssl.enable", "true");
- return props;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement