java邮件收发功能实现代码

本文实例为大家分享了邮件收发功能的具体实现代码,供大家参考,具体内容如下

准备工作, 环境搭建:
1. 本地搭建一个邮件服务器
  易邮服务器,eyoumailserversetup.exe
2. 新建邮箱账号
  张三给李四发邮件。
  步骤1:
    新建域名: 工具, 服务器设置, 单域名框中输入 itcast.com
  步骤2:
    新建邮箱账号:  zhangsan@itcast.com
                            lisi@itcast.com
3. 安装foxmail
    配置邮件发送服务器(smtp):  localhost      25
        邮件接收服务器(pop3):  localhost     110
    再新建账号,就可以接收邮件了!

注意

如果是web项目,因为javaee自带的有邮件功能,可能存在问题!
我们要用自己的mail.jar文件功能!  需要删除javaee中mail包!

使用:

JavaMail开发,先引入jar文件:

activation.jar   【如果使用jdk1.6或以上版本,可以不用这个jar文件】
mail.jar       【邮件发送核心包】

/**
 * 1. 发送一封普通邮件
 * @author Jie.Yuan
 *
 */
public class App_SendMail {

  @Test
  public void testSend() throws Exception {

    //0. 邮件参数
    Properties prop = new Properties();
    prop.put("mail.transport.protocol", "smtp");  // 指定协议
    prop.put("mail.smtp.host", "localhost");    // 主机  stmp.qq.com
    prop.put("mail.smtp.port", 25);         // 端口
    prop.put("mail.smtp.auth", "true");       // 用户密码认证
    prop.put("mail.debug", "true");         // 调试模式

    //1. 创建一个邮件的会话
    Session session = Session.getDefaultInstance(prop);
    //2. 创建邮件体对象 (整封邮件对象)
    MimeMessage message = new MimeMessage(session);
    //3. 设置邮件体参数:
    //3.1 标题
    message.setSubject("我的第一封邮件 ");
    //3.2 邮件发送时间
    message.setSentDate(new Date());
    //3.3 发件人
    message.setSender(new InternetAddress("zhangsan@itcast.com"));
    //3.4 接收人
    message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
    //3.5内容
    message.setText("你好,已经发送成功! 正文...."); // 简单纯文本邮件
    message.saveChanges();  // 保存邮件(可选)

    //4. 发送
    Transport trans = session.getTransport();
    trans.connect("zhangsan", "888");
    // 发送邮件
    trans.sendMessage(message, message.getAllRecipients());
    trans.close();
  }
}

带图片

/**
 * 带图片资源的邮件
 * @author Jie.Yuan
 *
 */
public class App_2SendWithImg {

  // 初始化参数
  private static Properties prop;
  // 发件人
  private static InternetAddress sendMan = null;
  static {
    prop = new Properties();
    prop.put("mail.transport.protocol", "smtp");  // 指定协议
    prop.put("mail.smtp.host", "localhost");    // 主机  stmp.qq.com
    prop.put("mail.smtp.port", 25);         // 端口
    prop.put("mail.smtp.auth", "true");       // 用户密码认证
    prop.put("mail.debug", "true");         // 调试模式
    try {
      sendMan = new InternetAddress("zhangsan@itcast.com");
    } catch (AddressException e) {
      throw new RuntimeException(e);
    }
  }

  @Test
  public void testSend() throws Exception {
    // 1. 创建邮件会话
    Session session = Session.getDefaultInstance(prop);
    // 2. 创建邮件对象
    MimeMessage message = new MimeMessage(session);
    // 3. 设置参数:标题、发件人、收件人、发送时间、内容
    message.setSubject("带图片邮件");
    message.setSender(sendMan);
    message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
    message.setSentDate(new Date());

    /***************设置邮件内容: 多功能用户邮件 (related)*******************/
    // 4.1 构建一个多功能邮件块
    MimeMultipart related = new MimeMultipart("related");
    // 4.2 构建多功能邮件块内容 = 左侧文本 + 右侧图片资源
    MimeBodyPart content = new MimeBodyPart();
    MimeBodyPart resource = new MimeBodyPart();

    // 设置具体内容: a.资源(图片)
    String filePath = App_2SendWithImg.class.getResource("8.jpg").getPath();
    DataSource ds = new FileDataSource(new File(filePath));
    DataHandler handler = new DataHandler(ds);
    resource.setDataHandler(handler);
    resource.setContentID("8.jpg");  // 设置资源名称,给外键引用

    // 设置具体内容: b.文本
    content.setContent("<img src='cid:8.jpg'/> 好哈哈!", "text/html;charset=UTF-8");

    related.addBodyPart(content);
    related.addBodyPart(resource);

    /*******4.3 把构建的复杂邮件快,添加到邮件中********/
    message.setContent(related);

    // 5. 发送
    Transport trans = session.getTransport();
    trans.connect("zhangsan", "888");
    trans.sendMessage(message, message.getAllRecipients());
    trans.close();
  }
}

图片+附件

/**
 * 3. 带图片资源以及附件的邮件
 * @author Jie.Yuan
 *
 */
public class App_3ImgAndAtta {

  // 初始化参数
  private static Properties prop;
  // 发件人
  private static InternetAddress sendMan = null;
  static {
    prop = new Properties();
    prop.put("mail.transport.protocol", "smtp");  // 指定协议
    prop.put("mail.smtp.host", "localhost");    // 主机  stmp.qq.com
    prop.put("mail.smtp.port", 25);         // 端口
    prop.put("mail.smtp.auth", "true");       // 用户密码认证
    prop.put("mail.debug", "true");         // 调试模式
    try {
      sendMan = new InternetAddress("zhangsan@itcast.com");
    } catch (AddressException e) {
      throw new RuntimeException(e);
    }
  }

  @Test
  public void testSend() throws Exception {
    // 1. 创建邮件会话
    Session session = Session.getDefaultInstance(prop);
    // 2. 创建邮件对象
    MimeMessage message = new MimeMessage(session);
    // 3. 设置参数:标题、发件人、收件人、发送时间、内容
    message.setSubject("带图片邮件");
    message.setSender(sendMan);
    message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
    message.setSentDate(new Date());

    /*
     * 带附件(图片)邮件开发
     */
    // 构建一个总的邮件块
    MimeMultipart mixed = new MimeMultipart("mixed");
    // ---> 总邮件快,设置到邮件对象中
    message.setContent(mixed);
    // 左侧: (文本+图片资源)
    MimeBodyPart left = new MimeBodyPart();
    // 右侧: 附件
    MimeBodyPart right = new MimeBodyPart();
    // 设置到总邮件块
    mixed.addBodyPart(left);
    mixed.addBodyPart(right);

    /******附件********/
    String attr_path = this.getClass().getResource("a.docx").getPath();
    DataSource attr_ds = new FileDataSource(new File(attr_path));
    DataHandler attr_handler = new DataHandler(attr_ds);
    right.setDataHandler(attr_handler);
    right.setFileName("a.docx");

    /***************设置邮件内容: 多功能用户邮件 (related)*******************/
    // 4.1 构建一个多功能邮件块
    MimeMultipart related = new MimeMultipart("related");
    // ----> 设置到总邮件快的左侧中
    left.setContent(related);

    // 4.2 构建多功能邮件块内容 = 左侧文本 + 右侧图片资源
    MimeBodyPart content = new MimeBodyPart();
    MimeBodyPart resource = new MimeBodyPart();

    // 设置具体内容: a.资源(图片)
    String filePath = App_3ImgAndAtta.class.getResource("8.jpg").getPath();
    DataSource ds = new FileDataSource(new File(filePath));
    DataHandler handler = new DataHandler(ds);
    resource.setDataHandler(handler);
    resource.setContentID("8.jpg");  // 设置资源名称,给外键引用

    // 设置具体内容: b.文本
    content.setContent("<img src='cid:8.jpg'/> 好哈哈!", "text/html;charset=UTF-8");

    related.addBodyPart(content);
    related.addBodyPart(resource);

    // 5. 发送
    Transport trans = session.getTransport();
    trans.connect("zhangsan", "888");
    trans.sendMessage(message, message.getAllRecipients());
    trans.close();
  }
}

以上就是本文的全部内容,希望对大家学习java程序设计有所帮助。

(0)

相关推荐

  • java使用http实现文件下载学习示例

    复制代码 代码如下: package com.hongyuan.test; import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import

  • JavaWeb实现文件上传与下载的方法

    文件上传概述 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet中读取上传文件的数据,并保存到本地硬盘中. 如何在web页面中添加上传输入项? <input type="file">标签用于在web页面中添加文件上传输入项,设置文件上传输入项时须注意: 1.必须要设置input输入项的name属性,否则浏览器将不会发送上传文件的数据. 2.必须把form的enctype属值设为multipart/form-data.设置该值

  • Java文件上传下载、邮件收发实例代码

    文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件

  • java结合HADOOP集群文件上传下载

    对HDFS上的文件进行上传和下载是对集群的基本操作,在<HADOOP权威指南>一书中,对文件的上传和下载都有代码的实例,但是对如何配置HADOOP客户端却是没有讲得很清楚,经过长时间的搜索和调试,总结了一下,如何配置使用集群的方法,以及自己测试可用的对集群上的文件进行操作的程序.首先,需要配置对应的环境变量: 复制代码 代码如下: hadoop_HOME="/home/work/tools/java/hadoop-client/hadoop" for f in $hadoo

  • java文件上传下载功能实现代码

    本文实例为大家分享了文件上传下载java实现代码,供大家参考,具体内容如下 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型:     默认类型:enctype="application/x-www-form-urlencoded"     文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组

  • java web项目实现文件下载实例代码

    复制代码 代码如下: File file = new File(path);// path是根据日志路径和文件名拼接出来的    String filename = file.getName();// 获取日志文件名称    InputStream fis = new BufferedInputStream(new FileInputStream(path));    byte[] buffer = new byte[fis.available()];    fis.read(buffer); 

  • java邮件收发功能实现代码

    本文实例为大家分享了邮件收发功能的具体实现代码,供大家参考,具体内容如下 准备工作, 环境搭建: 1. 本地搭建一个邮件服务器   易邮服务器,eyoumailserversetup.exe 2. 新建邮箱账号   张三给李四发邮件.   步骤1:     新建域名: 工具, 服务器设置, 单域名框中输入 itcast.com   步骤2:     新建邮箱账号:  zhangsan@itcast.com                             lisi@itcast.com 3

  • Java实现FTP服务器功能实例代码

    FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download).FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户登录后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录.列文件目录.设置传输参数及传送文件等.使用FTP可以传送所有类型的文件,如文本文件.二进制可执

  • Java实现对中文字符串的排序功能实例代码

    废话不多说了,直接给大家代码分享代码了. 具体代码如下所示: package test; /** * * @Title 书的信息类 * @author LR * @version . * @since -- */ public class Book { private String book_id; private String book_name; private String publishing_house; public Book(String book_id, String book_

  • Java实现微信公众平台朋友圈分享功能详细代码

    其实分享的方法在微信官网有较为详细的文档说明,现就其中一些比较绕的步骤进行总结,有问题随时交流哈. 首先微信其实已经自带分享到朋友圈,朋友,qq空间等功能,对于开发微信专门提供了一个接口,可以根据需要修改一些配置.例如修改要分享内容的头像,链接,描述等. 开发步骤: 1.在公众平台配置js-sdk接口 "公众号设置"--"功能设置"--"JS接口安全域名" 2.在要分享的页面引入js http://res.wx.qq.com/open/js/jw

  • Java FTP上传下载删除功能实例代码

    在没给大家上完整代码之前先给大家说下注意点: FTP上传下载,容易出现乱码,记得转换 package com.yinhai.team.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; impo

  • Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_test.utils; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import ja

  • Java List分页功能实现代码实例

    这篇文章主要介绍了Java List分页功能实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,工作上,由于业务的一些特殊性,需要拿到数据后在java代码中进行分页. 写了一个工具类,记录如下: import java.util.ArrayList; import java.util.List; import org.apache.commons.collections.CollectionUtils; /** * java内存分

  • Java语言实现简单的酒店前台管理小功能(实例代码)

    笔者是一名刚上路的小萌新,有什么问题希望大家可以指正! 以下为题目: 为某个酒店编写程序:酒店管理系统,模拟订房.退房.打印所有房间状态等功能. 1.该系统的用户是:酒店前台. 2.酒店使用一个二维数组来模拟."Room[][] rooms;" 3.酒店中的每一个房间应该是一个java对象:Room 4.每一个房间Room应该有:房间编号.房间类型.房间是否空闲. 5.系统应该对外提供的功能: 可以预定房间:用户输入房间编号,订房. 可以退房:用户输入房间编号,退房. 可以查看所有房间

  • Java实战之基于swing的QQ邮件收发功能实现

    一.电子邮件详解 假设自己的电子邮件是me@163.com,对方的邮件是you@163.com 我们编写好文件填写好对方文件,点击发送,这些电子邮件就发出去了 而这些电子邮件被称为MUA:Mail User Agent--邮件用户代理. Email发送出去的时候,不是直接到达对方的电脑,而是先发送到MTA:Mail Transfer Agent--邮件传输代理.如:网易 Email到达MTA后,MTA会把Emain投递到邮件的最终目的MDA:Mail Delivery Agent--邮件投递代理

  • Java手写图书管理基本功能附代码

    目录 1.book包 2.user包 3.operate包 Java中的最主要的语法之前基本都介绍完毕,本篇将使用之前的内容来写一个简单的图书管理系统,中间会展示部分代码来讲解,源码地址在这项目: 个人练习的项目 - Gitee.com 首先还是来看看运行的效果 我们来分析一下: Java中是通过对象之间的交互来解决事情的,所以我们来看看有哪些对象 首先显而易见的两个对象:用户和书,所以创建两个包book和user 通过上图可以看到:不同用户之间有相同的操作,也有不同的操作,所以不妨将所有的操作

随机推荐