<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ajie

    Java天下社區 http://www.javatx.cn 歡迎大家上來交流Java技術
    posts - 4, comments - 8, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    利用Java Mail API 開發郵件通知服務

    Posted on 2005-12-18 00:38 ajie 閱讀(2702) 評論(2)  編輯  收藏
      1/**
      2 * 該類演示了Java Mail的應用
      3 * 版權 本文版權屬Java天下
      4 * @author ljfan
      5 * @version 2.0, Created on 2005/08/10
      6 * 
      7 */

      8
      9package cn.javatx.util;
     10
     11import java.io.FileInputStream;
     12import java.text.SimpleDateFormat;
     13import java.util.Collection;
     14import java.util.Collections;
     15import java.util.Date;
     16import java.util.Properties;
     17import java.util.concurrent.ArrayBlockingQueue;
     18import java.util.concurrent.ThreadPoolExecutor;
     19import java.util.concurrent.TimeUnit;
     20
     21import javax.mail.Address;
     22import javax.mail.Message;
     23import javax.mail.MessagingException;
     24import javax.mail.Part;
     25import javax.mail.SendFailedException;
     26import javax.mail.Session;
     27import javax.mail.Transport;
     28import javax.mail.URLName;
     29import javax.mail.internet.AddressException;
     30import javax.mail.internet.InternetAddress;
     31import javax.mail.internet.MimeBodyPart;
     32import javax.mail.internet.MimeMessage;
     33import javax.mail.internet.MimeMultipart;
     34import javax.mail.internet.MimeUtility;
     35
     36public class Mail {
     37
     38    private String host;
     39
     40    private int port;
     41
     42    private String username;
     43
     44    private String password;
     45
     46    ThreadPoolExecutor executor = null;
     47
     48    private static Mail mail = new Mail();
     49
     50    public static Mail getInstance() {
     51        return mail;
     52    }

     53
     54    private Mail() {
     55        try {
     56            Properties prop = new Properties();
     57            FileInputStream fis = new FileInputStream("H:\\Tomcat5\\webapps\\ROOT\\WEB-INF\\classes\\mail.properties");
     58            prop.load(fis);
     59
     60            this.host = prop.getProperty("mail.smtp.host");
     61            this.port = Integer.parseInt(prop.getProperty("mail.smtp.port"));
     62            this.username = prop.getProperty("mail.smtp.username");
     63            this.password = prop.getProperty("mail.smtp.password");
     64            
     65            System.out.println("host:"+host);
     66            System.out.println("port:"+port);
     67
     68        }
     catch (Exception e) {
     69            System.out.println(e.getMessage());
     70        }

     71        
     72        executor = new ThreadPoolExecutor(1, Integer.MAX_VALUE, 60,
     73                TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(5));
     74    }

     75
     76    private Session session = null;
     77
     78    /**
     79     * Creates a Javamail session.
     80     */

     81    private synchronized void createSession() {
     82        if (host == null{
     83            throw new IllegalArgumentException("Host cannot be null.");
     84        }

     85
     86        Properties mailProps = new Properties();
     87        mailProps.setProperty("mail.smtp.host", host);
     88        mailProps.setProperty("mail.smtp.port", String.valueOf(port));
     89        mailProps.setProperty("mail.smtp.sendpartial""true");
     90        if (username != null{
     91            mailProps.put("mail.smtp.auth""true");
     92        }

     93        session = Session.getInstance(mailProps, null);
     94    }

     95
     96    public MimeMessage createMimeMessage() {
     97        if (session == null{
     98            createSession();
     99        }

    100        return new MimeMessage(session);
    101    }

    102
    103    /**
    104     * 發送郵件
    105     * 
    106     * @param fromName
    107     *            發件人姓名
    108     * @param fromEmail
    109     *            發件人地址
    110     * @param ToEmail
    111     *            收件人地址
    112     * @param CcEmail
    113     *            抄送人地址
    114     * @param subject
    115     *            郵件主題
    116     * @param textBody
    117     *            郵件內容
    118     * @param htmlBody
    119     *            郵件內容(html形式)
    120     */

    121    public void sendMessage(String fromName, String fromEmail, String ToEmail,
    122            String CcEmail, String subject, String textBody, String htmlBody) {
    123        try {
    124            String encoding = MimeUtility.mimeCharset("gb2312");
    125            MimeMessage message = createMimeMessage();
    126            
    127            String sTo[] = ToEmail.split(",");
    128            String sCc[] = CcEmail.split(",");
    129            
    130            //收件人地址
    131            Address to[] = new Address[sTo.length];
    132            for (int i = 0; i < sTo.length; i++{
    133                to[i] = new InternetAddress(sTo[i], "", encoding);
    134            }

    135            
    136            //抄送人地址
    137            Address cc[] = new Address[sCc.length];
    138            for (int i = 0; i < sTo.length; i++{
    139                cc[i] = new InternetAddress(sCc[i], "", encoding);
    140            }

    141            
    142            Address from = null;
    143
    144            if (fromName != null{
    145                from = new InternetAddress(fromEmail, fromName, encoding);
    146            }
     else {
    147                from = new InternetAddress(fromEmail, "", encoding);
    148            }

    149
    150            SimpleDateFormat format = new SimpleDateFormat(
    151                    "EEE, dd MMM yyyy HH:mm:ss Z", java.util.Locale.US);
    152
    153            message.setHeader("Date", format.format(new Date()));
    154            message.setHeader("Content-Transfer-Encoding""8bit");
    155            message.setRecipients(Message.RecipientType.TO, to);
    156            if (!(CcEmail.equals("")) || (CcEmail == null)) {
    157                message.setRecipients(Message.RecipientType.CC, cc);
    158            }

    159            message.setFrom(from);
    160            message.setSubject(subject, encoding);
    161            // Create HTML, plain-text, or combination message
    162            if (textBody != null && htmlBody != null{
    163                MimeMultipart content = new MimeMultipart("alternative");
    164                // Plain-text
    165                MimeBodyPart text = new MimeBodyPart();
    166                text.setText(textBody, encoding);
    167                text.setDisposition(Part.INLINE);
    168                content.addBodyPart(text);
    169                // HTML
    170                MimeBodyPart html = new MimeBodyPart();
    171                html.setContent(htmlBody, "text/html");
    172                html.setDisposition(Part.INLINE);
    173                content.addBodyPart(html);
    174                // Add multipart to message.
    175                message.setContent(content);
    176                message.setDisposition(Part.INLINE);
    177                addToTask(message);
    178            }
     else if (textBody != null{
    179                MimeBodyPart bPart = new MimeBodyPart();
    180                bPart.setText(textBody, encoding);
    181                bPart.setDisposition(Part.INLINE);
    182                MimeMultipart mPart = new MimeMultipart();
    183                mPart.addBodyPart(bPart);
    184                message.setContent(mPart);
    185                message.setDisposition(Part.INLINE);
    186                addToTask(message);
    187            }
     else if (htmlBody != null{
    188                MimeBodyPart bPart = new MimeBodyPart();
    189                bPart.setContent(htmlBody, "text/html");
    190                bPart.setDisposition(Part.INLINE);
    191                MimeMultipart mPart = new MimeMultipart();
    192                mPart.addBodyPart(bPart);
    193                message.setContent(mPart);
    194                message.setDisposition(Part.INLINE);
    195                addToTask(message);
    196            }

    197        }
     catch (Exception e) {
    198            System.out.println(e.getMessage());
    199        }

    200    }

    201
    202    private void addToTask(MimeMessage message) {
    203        if (message != null{
    204            sendMessages(Collections.singletonList(message));
    205        }
     else {
    206            System.out.println("Cannot add null email message to queue.");
    207        }

    208
    209    }

    210
    211    public void sendMessages(Collection<MimeMessage> messages) {
    212        if (messages.size() == 0{
    213            return;
    214        }

    215        executor.execute(new EmailTask(messages));
    216    }

    217
    218    /**
    219     * Task to send one or more emails via the SMTP server.
    220     */

    221    private class EmailTask implements Runnable {
    222
    223        private Collection<MimeMessage> messages;
    224
    225        public EmailTask(Collection<MimeMessage> messages) {
    226            this.messages = messages;
    227        }

    228
    229        public void run() {
    230            try {
    231                sendMessages();
    232            }
     catch (MessagingException me) {
    233                System.out.println(me.getMessage());
    234            }

    235        }

    236
    237        public void sendMessages() throws MessagingException {
    238            Transport transport = null;
    239            try {
    240                URLName url = new URLName("smtp", host, port, "", username,
    241                        password);
    242                transport = new com.sun.mail.smtp.SMTPTransport(session, url);
    243                transport.connect(host, port, username, password);
    244                //System.out.println(messages.size());
    245                for (MimeMessage message : messages) {
    246                    try {
    247                        transport.sendMessage(message, message
    248                                .getRecipients(MimeMessage.RecipientType.TO));
    249                    }
     catch (AddressException ae) {
    250                        System.out.println(ae.getMessage());
    251                    }
     catch (SendFailedException sfe) {
    252                        System.out.println(sfe.getMessage());
    253                    }

    254                }

    255            }
     finally {
    256                if (transport != null{
    257                    try {
    258                        transport.close();
    259                    }
     catch (MessagingException e) /* ignore */
    260                    }

    261                }

    262            }

    263        }

    264    }

    265}

    266


    Java天下社區
    http://www.javatx.cn
    歡迎大家上來交流Java技術。

    評論

    # re: 利用Java Mail API 開發郵件通知服務   回復  更多評論   

    2007-11-14 11:14 by aguai
    H:\\Tomcat5\\webapps\\ROOT\\WEB-INF\\classes\\mail.properties

    mail.properties配置文件里 的內容是什么呀?








    # re: 利用Java Mail API 開發郵件通知服務   回復  更多評論   

    2009-03-31 10:19 by 淡然一笑
    在代碼中是不應該出現服務器的路徑的
    H:\\Tomcat5\\webapps\\ROOT\\WEB-INF\\classes\\mail.properties

    這樣安全性不好

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲AV无码成人精品区狼人影院| 国产亚洲男人的天堂在线观看 | 亚洲精品av无码喷奶水糖心| 国产亚洲福利一区二区免费看| 四虎影视在线看免费观看| 国产亚洲av片在线观看16女人| 黄色网址免费大全| 久久亚洲AV成人无码国产电影 | 久久久久久久91精品免费观看| 国产精品亚洲一区二区三区久久 | 亚洲精品动漫人成3d在线| 国产成人一区二区三区视频免费| 亚洲中文字幕无码中文字| 中文字幕在线亚洲精品| 成人免费毛片内射美女-百度| 一级毛片在播放免费| 亚洲国产精品综合一区在线| www国产亚洲精品久久久| 一级成人a毛片免费播放| 国产亚洲精品第一综合| 亚洲高清不卡视频| 亚洲av午夜精品一区二区三区| 222www免费视频| 国产黄在线播放免费观看| 亚洲高清有码中文字| 亚洲中文字幕无码久久2017| 成人免费网站在线观看| 麻豆精品成人免费国产片| 立即播放免费毛片一级| 亚洲专区中文字幕| 亚洲国产成人精品无码区在线观看| 免费观看理论片毛片| 免费成人激情视频| 丁香花在线观看免费观看图片 | 国产精品亚洲片在线观看不卡| 无码高潮少妇毛多水多水免费| 久久久国产精品无码免费专区| 香港经典a毛片免费观看看| 7777久久亚洲中文字幕| 亚洲日本一区二区| 国产午夜亚洲精品午夜鲁丝片|