• 在很多项目中我们都会遇到发送邮件的功能,发送邮件其实还是很实用的,正好今天做项目需要实现,现在来简单的整理一下发送邮件的实现。

建立邮件与服务器之间的会话

Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", "smtp.sina.com");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.debug", "true");
Session session = Session.getInstance(props);
  • 这里我使用的是sina的邮件服务器,
  • props.setProperty("mail.transport.protocol", "smtp");是指需要同smtp来实现验证登录
  • props.setProperty("mail.smtp.host", "smtp.sina.com");指明用的是sina的服务器,自测目前QQ的服务器是收费的,sina的这个服务器免费,但是不能连续发送太多的邮件,否则会发送失败的
  • props.setProperty("mail.smtp.auth", "true");这句必须有,这个是标识说后面我们用户名和密码验证成功后就可以发送邮件
  • props.setProperty("mail.debug", "true");开启debug模式,是为了方便我们开发用的,有了这个我们在开发中在控制台上我们就可以看到邮件的发送详情及发送的状态,返回250状态码,说明发送成功。
  • Session session = Session.getInstance(props);拿到本次的会话,下面我们就可以发送邮件

创建邮件

Message msg = new MimeMessage(session);

这里的msg就是我们的邮件,但是现在邮件还是空的,我们需要向里面添加文本,HTML,附件,主题。。。。。。信息。

  • 第一步:

    设置邮件的发送方msg.setFrom(new InternetAddress(这里填你的邮件));

  • 第二部:

    设置邮件的主题(主题就是邮件的主题,这个我就不解释了,如果上传附件这个也会是你下载的附件的压缩名称)msg.setSubject("培训班结业信息");

  • 第三部:

    设置邮件的附件,附件这里我们需要拿到附件在硬盘上的地址,这里我写了一个方法,

    public static MimeBodyPart createAttachment(String fileName) throws Exception {
    MimeBodyPart attachmentPart = new MimeBodyPart();
    FileDataSource fds = new FileDataSource(fileName); //得到数据源
    attachmentPart.setDataHandler(new DataHandler(fds)); //得到附件本身并至入attachmentPart
    attachmentPart.setFileName(fds.getName());
    return attachmentPart; //得到文件名同样放入BodyPart
    }

    然后我们通过这个方法就拿到这个附件,并加入到邮件里(msg)

    MimeBodyPart attachment01 = createAttachment(filePath);
    MimeMultipart allPart = new MimeMultipart("mixed");
    allPart.addBodyPart(attachment01);
    msg.setContent(allPart);
  • 注明发送地址

    msg.setRecipient(RecipientType.TO,
    new InternetAddress(address));

发送邮件

  • 这里拿到邮件了,邮件的主题,内容,附件都设置好了,下面我们做的就是发送邮件

    Transport trans = session.getTransport();
    trans.connect(发送邮件的账号, 发送邮箱的密码);
    trans.sendMessage(msg, msg.getAllRecipients());
http://download.csdn.net/detail/u013132051/9642347

JavaMail的简单使用(自测可以发邮件)的更多相关文章

  1. python自动发邮件库yagmail

    #### 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from ...

  2. yagmail 实现发邮件

    yagmail 实现发邮件 yagmail 可以更简单的来实现自动发邮件功能. github项目地址: https://github.com/kootenpv/yagmail 安装 pip insta ...

  3. python自动发邮件库yagmail(转)

    一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text import MIMEText from email ...

  4. 从spring boot发邮件聊到开发的友好性

    前些天帮一个朋友做网站,全站都是静态页面,唯一需要用到后端开发的是他需要一个留言板.传统的留言板一般都是提交后保存到数据库,然后提供一个后台的留言列表给管理人员看,我嫌麻烦,就决定留言提交到后台直接发 ...

  5. python语言(六)mock接口开发、发邮件、写日志、新Excel操作

    一.urllib模块 urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. url ...

  6. 【python】python 自动发邮件

    一.一般发邮件的方法 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件. 注意到构造MIMETEXT对象时,第一个参数就是邮件正文,第 ...

  7. 【知识积累】JavaMail实现发邮件功能

    一.前言 今天闲来没事,想着通过程序来给别人发邮件.于是,上网搜了一下,相应的资料也很多,刚开始完成了邮件的简单发送,后来想如何能发送附件,继续寻找 答案,但是遇到了一个问题是当我使用txt类型作为附 ...

  8. Java - JavaMail - 利用 JavaMail 发邮件的 小demo

    1. 概述 面试的时候, 被问到一些乱七八糟的运维知识 虽然我不是干运维的, 但是最后却告诉我专业知识深度不够, 感觉很难受 又回到了一个烦人的问题 工作没有深度的情况下, 你该如何的提升自己, 并且 ...

  9. 依据 smtp协议的简单golang 的发邮件实现

    依据 smtp协议的简单golang 的发邮件实现 协议格式如下 From:sender_user@demo.net To:to_user@demo.net Subject:这是主题 Mime-Ver ...

随机推荐

  1. 网络下载器 迅雷大众版 v7.9.42.5050 精简绿色版

    下载地址:点我 基本介绍 迅雷大众版是一款采用了先进的超线程技术基于网格原理,能够将存在于第三方服务器和计算机上的数据文件进行有效整合,通过这种先进的超线程技术,用户能够以更快的速度从这些第三方节点平 ...

  2. 转: windows系统下mysql出现Error 1045(28000) Access Denied for user 'root'@'localhost'

    windows系统下mysql出现Error 1045(28000) Access Denied for user 'root'@'localhost' 转自 http://zxy5241.space ...

  3. CI工具Jenkins的安装配置【linux】——jenkins集成sonarqube-异常解决

    Setup 官网https://jenkins.io/ 下载war包,扔到tomcat下启动即可. 如果有port限制,在iptables中打开商品限制. 访问http://ip:port/jenki ...

  4. Android开发-百度地图之电子围栏

    功能实现:根据经纬度创建一个坐标,判断该坐标是否在指定圆形覆盖范围内 两个计算方法,直接套用: /** * 地球半径 */private static double EARTH_RADIUS = 63 ...

  5. 对于springboot的几种注入方法的个人看法

    最近在知乎上面看到一篇关于程序员面试的问题,面试官问我们一般有几种注入的方法,这几种注入的方法分别在什么时候运用比合理,当时我看到这个时候懵逼了,由于我自己也是刚刚接触springboot不久,所以就 ...

  6. 从后端到前端之Vue(二)写个tab试试水

    上一篇写了一下table,然后要写什么呢?当然是tab了.动态创建一个tab,里面放一个table,这样一个后台管理的基本功能(之一)就出来了. 好吧,这里其实只是试试水,感受一下vue的数据驱动可以 ...

  7. 【并查集】连接格点-C++

    连接格点 描述 有一个M行N列的点阵,相邻两点可以相连.一条纵向的连线花费一个单位,一条横向的连线花费两个单位.某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通. 输入 第一 ...

  8. python基础知识六 文件的基本操作+菜中菜

    基础知识六 文件操作 ​ open():打开 ​ file:文件的位置(路径) ​ mode:操作文件模式 ​ encoding:文件编码方式 ​ f :文件句柄 f = open("1.t ...

  9. Redis持久化背后的故事

    Redis持久化 Redis提供了不同的持久化选项: RDB持久化以指定的时间间隔保存那个时间点的数据快照. AOF持久化方法则会记录每一个服务器收到的写操作.在服务器启动时,这些记录的操作会逐条执行 ...

  10. 七、SQL 高级语法一

    Case when Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE ...