zoukankan      html  css  js  c++  java
  • pop3_用Java发送图文并茂的HTML邮件

    package com.syj;   
      
    import java.io.ByteArrayOutputStream;   
    import java.io.FileInputStream;   
    import java.io.IOException;   
    import java.util.Arrays;   
    import java.util.Date;   
    import java.util.Properties;   
      
    import javax.activation.DataHandler;   
    import javax.activation.FileDataSource;   
    import javax.mail.Authenticator;   
    import javax.mail.Message;   
    import javax.mail.PasswordAuthentication;   
    import javax.mail.Session;   
    import javax.mail.Transport;   
    import javax.mail.internet.InternetAddress;   
    import javax.mail.internet.MimeMessage;   
      
    import javax.mail.BodyPart;   
    import javax.mail.Multipart;   
    import javax.mail.internet.MimeBodyPart;   
    import javax.mail.internet.MimeMultipart;   
      
    import com.sun.istack.internal.ByteArrayDataSource;   
      
    /**  
     * <P>  
     * Title:用java发送邮件的例子  
     * </P>  
     *   
     * <P>  
     * Description:发送图片附件并在html中使用该图片  
     * </P>  
     *   
     * <P>  
     * Copyright: Copyright (c) 2007  
     * </P>  
     *     
     * @main sunyujia@yahoo.cn  
     * @date Jun 10, 2008 12:35:26 AM  
     */  
    public class SendMail {   
        private static String username = "xxxx";   
        private static String password = "xxxx";   
        private static String smtpServer = "smtp.163.com";   
        private static String fromMailAddress = "xxxx@163.com";   
        private static String toMailAddress = "sunyujia@yahoo.cn";   
      
        public static void main(String[] args) throws Exception {   
            Properties props = new Properties();   
            props.put("mail.smtp.auth", "true");   
            props.put("mail.smtp.host", smtpServer);   
            // 获得邮件会话对象   
            Session session = Session.getDefaultInstance(props,   
                    new SmtpAuthenticator(username, password));   
            /** *************************************************** */  
            // 创建MIME邮件对象   
            MimeMessage mimeMessage = new MimeMessage(session);   
            mimeMessage.setFrom(new InternetAddress(fromMailAddress));// 发件人   
            mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(   
                    toMailAddress));// 收件人   
            mimeMessage.setSubject("主题");   
            mimeMessage.setSentDate(new Date());// 发送日期   
            Multipart mp = new MimeMultipart("related");// related意味着可以发送html格式的邮件   
            /** *************************************************** */  
            BodyPart bodyPart = new MimeBodyPart();// 正文   
            bodyPart.setDataHandler(new DataHandler("测<img src="cid:IMG1" />试",   
                    "text/html;charset=GBK"));// 网页格式   
            /** *************************************************** */  
            BodyPart attachBodyPart = new MimeBodyPart();// 普通附件   
            FileDataSource fds = new FileDataSource("c:/boot.ini");   
            attachBodyPart.setDataHandler(new DataHandler(fds));   
            attachBodyPart.setFileName("=?GBK?B?"  
                    + new sun.misc.BASE64Encoder().encode(fds.getName().getBytes())   
                    + "?=");// 解决附件名中文乱码   
            mp.addBodyPart(attachBodyPart);   
            /** *************************************************** */  
            MimeBodyPart imgBodyPart = new MimeBodyPart(); // 附件图标   
            byte[] bytes = readFile("C:/button.gif");   
            ByteArrayDataSource fileds = new ByteArrayDataSource(bytes,   
                    "application/octet-stream");   
            imgBodyPart.setDataHandler(new DataHandler(fileds));   
            imgBodyPart.setFileName("button.gif");   
            imgBodyPart.setHeader("Content-ID", "<IMG1></IMG1>");// 在html中使用该图片方法src="cid:IMG1"   
            mp.addBodyPart(imgBodyPart);   
            /** *************************************************** */  
            mp.addBodyPart(bodyPart);   
            mimeMessage.setContent(mp);// 设置邮件内容对象   
            Transport.send(mimeMessage);// 发送邮件   
      
        }   
      
        /**  
         * 读取文件  
         *   
         * @param file  
         *            文件路径  
         * @return 返回二进制数组  
         */  
        public static byte[] readFile(String file) {   
            FileInputStream fis = null;   
            ByteArrayOutputStream bos = null;   
            try {   
                fis = new FileInputStream(file);   
                bos = new ByteArrayOutputStream();   
                int bytesRead;   
                byte buffer[] = new byte[1024 * 1024];   
                while ((bytesRead = fis.read(buffer)) != -1) {   
                    bos.write(buffer, 0, bytesRead);   
                    Arrays.fill(buffer, (byte) 0);   
                }   
            } catch (IOException e1) {   
                e1.printStackTrace();   
            } finally {   
                try {   
                    if (bos != null)   
                        bos.close();   
                } catch (IOException e) {   
                    e.printStackTrace();   
                }   
            }   
            return bos.toByteArray();   
        }   
    }   
      
    /**  
     * Smtp认证  
     */  
    class SmtpAuthenticator extends Authenticator {   
        String username = null;   
        String password = null;   
      
        // SMTP身份验证   
        public SmtpAuthenticator(String username, String password) {   
            this.username = username;   
            this.password = password;   
        }   
      
        public PasswordAuthentication getPasswordAuthentication() {   
            return new PasswordAuthentication(this.username, this.password);   
        }   
      
    }  
  • 相关阅读:
    STM32系列命名规则
    在使用MOS管时要注意的问题
    LED汽车前大灯
    Linux Makefile analysis for plain usr
    Linux Kernel Makefile Test
    linux源码Makefile的详细分析
    "The connection for the USB device '###' was unsuccessful. The device is currently in use"
    Allegro使用技巧
    Integrated Circuit Intro
    ADC/DAC的一些参数
  • 原文地址:https://www.cnblogs.com/gisblogs/p/4466776.html
Copyright © 2011-2022 走看看