1. import java.util.Properties;
  2.  
  3. import javax.activation.DataHandler;
  4. import javax.activation.DataSource;
  5. import javax.activation.FileDataSource;
  6. import javax.mail.BodyPart;
  7. import javax.mail.Message;
  8. import javax.mail.Multipart;
  9. import javax.mail.Session;
  10. import javax.mail.internet.InternetAddress;
  11. import javax.mail.internet.MimeBodyPart;
  12. import javax.mail.internet.MimeMessage;
  13. import javax.mail.internet.MimeMultipart;
  14. import javax.mail.Transport;
  15.  
  16. public class email {
  17. public void send(String emailHost, //smtp服务器
  18. String toEmail, //收件人邮箱
  19. String additionalPath, //附件路径
  20. String additionalName, //附件名称
  21. String myEmailUser, //发件邮箱
  22. String myEmailPwd, //密码
  23. String emailTitle, //邮件标题
  24. String context ){ //内容
  25. Properties props = new Properties();
  26. props.put("mail.smtp.emailHost",emailHost);
  27. props.put("mail.smtp.auth", "true");
  28. props.put("mail.smtp.port", "");//qq专用其它不需要
  29.  
  30. Session session = Session.getDefaultInstance(props);
  31. session.setDebug(true);
  32. MimeMessage message = new MimeMessage(session);
  33. try {
  34. message.setFrom(new InternetAddress(myEmailUser)); // 加载发件人地址
  35.  
  36. message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));// 加载收件人地址
  37. message.setSubject(emailTitle);// 加载标题
  38.  
  39. Multipart multipart = new MimeMultipart();// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
  40. BodyPart contentPart = new MimeBodyPart();
  41. contentPart.setText(context);// 设置邮件的文本内容
  42. multipart.addBodyPart(contentPart);
  43.  
  44. BodyPart messageBodyPart = new MimeBodyPart();// 添加附件
  45. DataSource source = new FileDataSource(additionalPath);
  46.  
  47. messageBodyPart.setDataHandler(new DataHandler(source));// 添加附件的内容
  48. sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
  49. messageBodyPart.setFileName("=?GBK?B?"+enc.encode(additionalName.getBytes())+"?=");
  50. multipart.addBodyPart(messageBodyPart);
  51.  
  52. message.setContent(multipart);//将multipart对象放到message中
  53. message.saveChanges();// 保存邮件
  54. Transport transport = session.getTransport("smtp");// 发送邮件
  55. transport.connect(emailHost, myEmailUser, myEmailPwd);// 连接服务器的邮箱
  56. transport.sendMessage(message, message.getAllRecipients());// 把邮件发送出去
  57. transport.close();
  58. } catch (Exception e) {
  59. e.printStackTrace();
  60. }
  61. }
  62.  
  63. public static void main(String[] args) {
  64. email email = new email();
  65. email.send("smtp.qq.com",
  66. "xxxxxxxxx@qq.com",
  67. "E:\\text.txt",
  68. "附件名称随便",
  69. "xxxxxxxxx@qq.com",
  70. "xxxxxxxxxrqudbgie",//qq为开启smtp给的密钥,其它为密码
  71. "测试邮件",
  72. "我的最新测试邮件!!"
  73. );
  74. }

Email实例的更多相关文章

  1. AngularJS中介者模式实例

    在任何应用程序中,中介者模式随处可见. → 有一个事件源,触发事件,传递参数→ 中介者记下这个事件,向外界广播,并带上参赛→ 有一个地方侦听中介者事件,一旦事件源触发事件,就从中介者手里获取事件相关参 ...

  2. html常用的知识点以及混合框架

    html中:   <hr/> 在页面中创建水平线 例如:   <p> p标签是定义段落   > alt 作为可预备可替换信息,在无法加载图片时显示文字信息   定义htm ...

  3. Django【进阶篇】

    目录 一.Model 二.admin 三.Form组件 四.Cookie 五.Session 六.分页 七.序列化 一.Model 数据库的配置 1.django默认支持sqlite,mysql, o ...

  4. ceph radosgw-admin的操作

    常用操作: 生成一新用户: 在两个集群当中都创建相同的管理用户 radosgw-admin user create --uid=admin --display-name=admin --access_ ...

  5. html5新增标签/删除标签

    闲聊: 最近小颖工作稍微比较轻松,没事就看看慕课,看了看:HTML5之元素与标签结构,里面简单讲解了下HTML5的一些新特性,小颖之前没写过HTML5的页面,所以就当写笔记将那些新的特性整理出来,也方 ...

  6. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  7. Java 学习(18):Java 序列化& 网络编程& 发送邮件

    --Java 序列化 -- 网络编程 -- 发送邮件 Java 序列化 Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据.有关对象的类型的信 ...

  8. Ruby Rails学习中:Ruby内置的辅助方法,基础内容回顾补充

    一. Ruby内置的辅助方法 1.打开文件:app/views/layouts/application.html.erb(演示应用的网站布局) 来咱把注意力放在圈起来的那一行: 这行代码使用 Rail ...

  9. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用: using System.Net.Mail; using System.Text; using System.Net; ...

随机推荐

  1. CentOS系统实现SSH无密码登录的方法

    一.环境配置 1.服务端:CentOS release 5.3 IP:222.73.115.198 2.客服端:CentOS release 5.8 IP:192.168.4.244 二.配置SSH无 ...

  2. Spring 源码学习:day1

    前言: 最近也不知道该忙些什么样的事情.便随便看看源码算了. 正文: (1) 在网上下载 Spring 的源码: 可以采用 git 方式下载 https://github.com/spring-pro ...

  3. [Paper] **Before GAN: sparse coding

    读罢[UFLDL] ConvNet,为了知识体系的完整,看来需要实战几篇论文深入理解一些原理. 如下是未来博文系列的初步设想,为了hold住 GAN而必备的知识体系,也是必经之路. [Paper] B ...

  4. 更换 homebrew 国内镜像源

    Brew 是OS X 上类似apt-get以及yum的一个软件包管理器,它依托于Github……………… 所以,虽然你侥幸下载到了 brew,但你肯定是无法更新 brew 的.原因你懂.不过虽然不能更 ...

  5. js添加事件处理程序

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 前端和后端的数据交互(jquery ajax+python flask+mysql)

    上web课的时候老师布置的一个实验,要求省市连动,基本要求如下: 1.用select选中一个省份. 2.省份数据传送到服务器,服务器从数据库中搜索对应城市信息. 3.将城市信息返回客户,客户用sele ...

  7. kafka+zookeeper环境配置(linux环境单机版)

    版本: CentOS-6.5-x86_64 zookeeper-3.4.6 kafka_2.10-0.10.1.0 一.zookeeper下载与安装 1)下载 $ wget http://mirror ...

  8. Flask web开发之路一

    之前学过一段时间的flask,感觉还是挺好用的,自己的专利挖掘项目也想这个web框架来搭建,于是重新开始基础学习 环境:win10,python3.6,pycharm2017,虚拟环境virtuale ...

  9. c语言中的左移和右移

    先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如: int i = 1;i = i << 2;  //把i里的值左移2位 也就是说,1的2进制是00 ...

  10. hdu4847 Wow!Such Doge!【字符串】【暴力】

    Wow! Such Doge! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...