Email 电子邮件,用java实现email的发送,首先我们需要了解一下email发送的大概过程。简单来说,发送email,需要从用户的电脑邮件软件(MUA),发送到邮件服务器(MTA)上,在通过若干个邮件服务器的中转,最后到达收件人的邮件服务器(MDA),收件人就可以通过邮件软件(MUA)接收邮件了。

看完email传送过程后,我们再来了解一下三种常见的邮件协议

SMTP协议:

SMTP(Simple Mail Transfer Protocol),简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于TCP/IP协议簇。SMTP服务器就是遵循SMTP协议的“发送邮件"服务器

POP3协议:

POP3(Post Office Protocol 3),邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。 POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件。POP3服务器是遵循POP3协议的 接收邮件服务器,用来接“收电子邮件”的。

IMAP协议:

IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之不同的是,开启了IMAP后,您在电子邮件客户端收权的邮件仍然保留在服务器上,同时在客户端上的操作都 会反馈到服务器上,如:删除邮件,标记已读等, 服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

发送一个电子邮件:

如何用Java实现邮件的发送,实质上就是编写一个可以发送邮件的低配MUA;发送邮件,需要通过发送协议SMTP协议。发送邮件前,我们需要确定作为MTA的邮件服务器地址和端口号,邮件服务器的地址通常是smtp.***.com,端口号由邮件服务商确定(可以查到)。下面的案列用126wei标准。准备好SMTP登录信息后,我们需要导入javaMail相关依赖的jar包。

在正式写邮件发送类之前,我们需要创建一个工具类JavaMailUtills。

1、创建session对象,直接调用其中的createSession()方法,需要传入两个参数:第一个properties对象,用来存SMTP服务器的连接信息。第二个是用户认证对象(Authenticator接口的匿名实现类);当我们获取到Session实例后,打开debug模式便于我们查看SMTP通信的详细内容,便于调试。

代码示例:

import java.util.Properties;import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;//创建session的工具类
public class javaMailUtils {public static Session creatSession() {//SMTP服务器地址String smtp="smtp.126.com";//邮箱账号和密码String userName="ddupei@126.com";String password="MJEUJFLIIUSUNGGT";//授权密码//SMTP服务器的连接信息Properties props=new Properties();props.put("mail.smtp.host", smtp);//SMTP主机名props.put("mail.smtp.port", 25);//主机端口号props.put("mail.smtp.auth", "true");//是否需要用户验证props.put("mail.smtp.starttls.enable", "true");  //启用TLS加密//创建Session//参数1:SMTP服务器的连接信息//参数2:用户认证对象(Authenticator接口的匿名实现类)Session session=Session.getInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(userName, password);}});//开启调试模式session.setDebug(true);System.out.println(session);return session;}
}

工具类准备好后,我们就可以正式开始写发送邮件的内容了:

发送邮件时我们需要先创建一个邮件message对象,传入session对象;最后在调用Transport.send(message);发送邮件

邮件对象的方法设置如下:

            msg.setFrom(new InternetAddress("xxx@126.com"));  //发件人msg.setRecipients(RecipientType.TO, "xxxx@qq.com"); //收件人//RecipientType.TO:收件人//RecipientType.CC:抄送人msg.setSubject("课堂测试邮件");  //标题msg.setText("<b>今日有雨</b>,出门记得带伞哦!","utf-8","html");//正文Transport.send(msg); //发送邮件

如果发送的邮件内容含有附件且附件内容需要在正文里显示时,我们需要创建一个邮件内容“复合”对象Multipart。再用BodyPart设置正文内容和上传附件。最后再用message.setContent(multipart);把复合内容添加到邮件对象;最后发送邮件对象。

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;import javax.activation.DataHandler;
import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;public class Demo04 {public static void main(String[] args) {try {//创建SessionSession session=javaMailUtils.creatSession();//创建邮件对象MimeMessage message=new MimeMessage(session);message.setFrom(new InternetAddress("xxxx@126.com"));message.setRecipients(RecipientType.TO, "xxxx@qq.com");message.setSubject("图片在正文里的测试邮件");//正文部分(附件图片+文字内容)BodyPart textBodyPart=new MimeBodyPart();StringBuilder body=new StringBuilder();body.append("<h1>附件图片名称</h1>");body.append("<img src=\"cid:imageName\"/>");//通过内容ID引用附件图片body.append("当我看到花瓣<b>脱离</b>花蕊慢慢枯萎");textBodyPart.setContent(body.toString(),"text/html;charset=utf-8");//邮件部分BodyPart imagePart=new MimeBodyPart();imagePart.setFileName("aaa.jpg");imagePart.setDataHandler(new DataHandler(new ByteArrayDataSource( Files.readAllBytes(Paths.get("本地图片地址\\本地图片名称.jpg")),"application/octet-stream")));imagePart.setHeader("Content-ID", "<imageName>");//设置内容ID//组合正文+附件Multipart multipart=new MimeMultipart();multipart.addBodyPart(textBodyPart);multipart.addBodyPart(imagePart);//添加到邮件对象message.setContent(multipart);//发送Transport.send(message);} catch (MessagingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

基于java Email的电子邮件发送相关推荐

  1. 网络编程----基于Java Email的电子邮件发送

    前言 电子邮件(electronic mail,简称E-mail,标志:@)又称电子信箱.电子邮政,它是-种用电子手段提供信息交换的通信方式.电子邮件指用电子手段传送信件.单据.资料等信息的通信方法. ...

  2. java gui论文_毕业设计论文-基于JAVA GUI的电子邮件客户端软件的设计与实现.doc

    毕业设计论文-基于JAVA GUI的电子邮件客户端软件的设计与实现.doc 还剩 41页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧, ...

  3. Java Email(实现邮件发送)

    Email就是电子邮件,在Java中如何实现邮件的发送: 电子邮件从用户电脑的邮件软件,例如Outlook,发送到邮件服务器上,可能经过若干个邮件服务器的中转,最终到达对方邮件服务器上,收件方就可以用 ...

  4. Java GridBagLayout简单电子邮件发送界面的实现

    GridBagLayout网格块布局 运行示例: 代码: import java.awt.Component; import java.awt.Frame; import java.awt.GridB ...

  5. 基于Java实现企业微信群聊机器人-文件上传+消息推送(保证可用)

    基于Java实现企业微信群聊机器人-文件上传+消息推送 1.pom.xml(注意版本尽量保持一致) 2.文件工具类 3.企业微信请求类 4.企业微信响应类 5.发送方法 6.企业微信机器人创建和配置 ...

  6. 档案电子封装包Java类,email: Android电子邮件库(基于JavaMail封装)

    Email for Android Email for Android是基于JavaMail封装的电子邮件库,简化在Android客户端中编写发送和接收电子邮件的的代码.把它集成到你的Android项 ...

  7. 基于Java的SMTP协议邮件发送模拟系统

    目录 1. 原理分析 2. 前端页面 3. 数据库设计 4. 后端数据处理 5. 参考文献 6. 注意事项 1. 原理分析 SMTP协议 SMTP(Simple Mail Transfer Proto ...

  8. 基于Java的设计开题报告_基于Java的电子邮件的收发系统的设计与实现开题报告...

    基于Java的电子邮件的收发系统的设计与实现开题报告 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 开题报告 基于 Java 的电子 ...

  9. java发送gmail_如何在Gmail中轻松通过电子邮件发送人群

    java发送gmail Mailing lists are an old tool in the email arsenal, but their implementation in Gmail is ...

最新文章

  1. VIRTUAL COMMUNITY INFORMATICS
  2. 157所中国内地高校上榜!最新世界大学学术排名发布
  3. tab s6 linux on dex,S Pen + DeX模式 三星Galaxy Tab S6让你秒变办公达人
  4. Struts 动态FORM实现过程
  5. OK335xS psplash make-image-header.sh hacking
  6. javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第1部分
  7. 修改软件许可证使用时间_阮一峰:为什么开源数据库改变许可证?
  8. 有的网线接口为什么做不到轻薄化?
  9. MySQL管理之 MyISAM和InnoDB存储引擎简单对比
  10. PAT 1070. 结绳(25)-乙级
  11. 龙之谷冰龙linux手工服务端,【网游】【龙之谷】v300冰龙巢穴一键服务端+客户端+GM工具+视频教程...
  12. ODAC Windows 安装
  13. es6 7 8 9 10特性归纳
  14. 电子时钟c语言课题介绍,电子时钟开题报告
  15. 002.光流传感器(ADNS0380版)使用说明
  16. python测试用例发送邮件用谷歌浏览器的方式
  17. Servelt中文乱码问题处理
  18. 华为Huawei服务器IBMC默认用户密码
  19. Android 数据线连接单反相机读取照片
  20. [BX]和内存单元的描述

热门文章

  1. PDF解密该如何在线进行
  2. Python 基础学习Chapter2
  3. 【面试】全网最全的C++语言基础八股准备(持续更新)
  4. android小项目之新闻客户端四
  5. Java 基本数据类型 - 四类八种
  6. 优思学院|六西格玛管理是什么?六西格玛对企业管理有什么好处?
  7. 【设计模式-工厂方法】想象力和创造力:你考虑过自动化实现工厂吗?
  8. 同态加密库 HEAAN效率测试(1)
  9. Python爬长津湖豆瓣短评
  10. FIRST集和FOLLOW集