`
xinlingwuyu
  • 浏览: 138395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用Java发送图文并茂的HTML邮件

阅读更多

view plaincopy to clipboardprint?
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> 
 *  
 * @author 孙钰佳 
 * @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);  
    }  
 
}
原文网址:http://blog.csdn.net/sunyujia/archive/2008/06/10/2528696.aspx

分享到:
评论

相关推荐

    java实现邮件发送(三种发送方式都有)

    Java发送邮件是软件开发中常见的需求,特别是在自动化通知、用户验证和客户服务等方面。在这个主题下,我们将探讨三种Java实现邮件发送的方式,以及如何通过提供的代码和参考资料进行实践。 首先,让我们了解一下...

    Matlab与java接口(图文并茂)

    本文将详细阐述配置要求、环境配置、Java Builder的使用以及在Java工程中调用Matlab组件的关键步骤。 一、配置要求 要成功建立Matlab与Java的接口,首先需要满足以下条件: 1. MATLAB版本:至少要求R2006b(MATLAB ...

    Java入门教程.pdf

    1. **Java基础语法**:了解Java的基本结构,包括数据类型(如整型、浮点型、字符型和布尔型)、变量的声明与使用,以及运算符的种类和使用方法。此外,还会学习控制流程语句,如条件语句(if-else)和循环语句(for...

    Java核心编程Java 课件ppt

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。这份"Java核心编程Java课件ppt"是为初学者设计的,旨在帮助他们掌握Java编程的基础知识。以下是一些主要的学习点: 1. **Java简介**:...

    Java 图形界面开发--图文并茂建立学生管理系统.rar

    在这个"Java 图形界面开发--图文并茂建立学生管理系统"的教程中,我们将深入探讨如何利用Java语言构建一个直观且功能丰富的学生管理系统。 首先,我们需要了解Java中的图形用户界面(GUI)库。Java Swing和JavaFX是...

    图文并茂、手把手教你怎么将Java项目与Flex4整合项目源代码

    Java是一种广泛使用的面向对象编程语言,它具有跨平台性、稳定性和高效性。Flex4是ActionScript 3.0基础上的开发框架,提供了丰富的组件库和强大的图形渲染能力,使得开发者能够创建出美观且功能丰富的Web应用。 ...

    Java 线程池详解,图文并茂.pdf

    Java 线程池详解 Java 线程池是一种高效的线程管理机制,它可以避免频繁创建和销毁线程,从而提高系统性能。线程池的设计思想源于生活,例如工厂的生产流程可以看作是一个线程池。 在 Java 中,线程池的实现类是 ...

    head-first-java.pdf

    JAVA 入门书籍,简单易懂 《head first java》是本完整的面向对象(object-oriented,oo)程序设计和java的学习...·使用java api函数库 ·编写、测试与部署应用程序 ·处理异常 ·多线程 ·网络程序设计 ·集合与泛型

    邮件营销 益体网内部学习资料邮件地址收集图文并茂详解

    邮件营销 益体网内部学习资料邮件地址收集图文并茂详解 好几种方法哦

    清华大学java教程html版

    这份教程以HTML格式呈现,旨在提供一个直观、易懂且互动性强的学习平台,让学习者能够通过图文并茂的方式掌握Java语言的基础与高级应用。 Java是一种广泛应用于各种领域的面向对象编程语言,它的跨平台特性使其在...

    Head First Java 中文高清版

    总而言之,《Head First Java 中文高清版》以简单易懂的方式介绍了Java编程的方方面面,从基础到高级,从理论到实践,内容全面,图文并茂,非常适合初学者以及希望提升Java技能的开发者。通过本书的学习,读者将能够...

    Java视频代码和PPT

    Java,作为一种广泛使用的编程语言,它的诞生源自Sun Microsystems公司,于1995年正式推出。自那时以来,Java已经成为全球开发者的重要工具,用于构建各种跨平台的应用软件,包括桌面应用、企业级系统、移动应用...

    HTML教程(图文并茂)

    HTML入门教程(图文并茂 版) 页面 文件结构 语言字符集信息 背景色彩和文字色彩 页面空白 链接 开新窗口 标尺线 字体 标题 字号 物理字体 逻辑字体 颜色 客户端字体 字符实体 ...

    Nokia MMS Java Library v1.1

    2. **新闻客户端**:发送图文并茂的新闻报道,增强阅读体验。 3. **娱乐应用**:分享音乐、视频等多媒体内容,增加互动性。 4. **广告推广**:通过MMS发送动态广告,吸引用户注意力。 六、注意事项 在使用诺基亚MMS...

    基于java语言开发的学生信息管理系统,里面包含java源代码,图文并茂,适合学习和开发者参考。

    2. 数据持久化:使用Java的JDBC(Java Database Connectivity)接口与数据库进行交互,实现数据的存储和检索。通常搭配如MySQL、Oracle等关系型数据库,实现数据的持久化。 三、数据库设计 1. ER图:在系统设计...

    Java环境搭建图文

    本文将通过图文并茂的方式详细介绍如何在服务器上安装配置Java Development Kit (JDK),并通过具体的步骤展示如何设置环境变量,确保Java环境能够正确运行。 #### 二、准备工作 在开始Java环境搭建之前,我们需要...

    HTML教程(最全的图文并茂教程).ppt

    HTML教程(最全的图文并茂教程)

    清华大学 java教程

    这个"清华大学JAVA教程"作为一个图文并茂的学习资料,不仅提供了理论知识,还可能包含实例演示和练习题,帮助学习者更直观地理解Java编程,并通过实践提升技能。对于初学者来说,这是一个很好的起点;对于有一定基础...

    Java HelpGUI 帮助视图组件.rar

    3. **HTML渲染**:HelpGUI通常以HTML格式呈现帮助内容,这使得开发者可以利用HTML的丰富标记语言特性,包括文本样式、链接、图像等,来创建图文并茂的帮助文档。 4. **搜索功能**:为了便于用户快速找到所需信息,...

Global site tag (gtag.js) - Google Analytics