基于java Email的电子邮件发送
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的电子邮件发送相关推荐
- 网络编程----基于Java Email的电子邮件发送
前言 电子邮件(electronic mail,简称E-mail,标志:@)又称电子信箱.电子邮政,它是-种用电子手段提供信息交换的通信方式.电子邮件指用电子手段传送信件.单据.资料等信息的通信方法. ...
- java gui论文_毕业设计论文-基于JAVA GUI的电子邮件客户端软件的设计与实现.doc
毕业设计论文-基于JAVA GUI的电子邮件客户端软件的设计与实现.doc 还剩 41页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧, ...
- Java Email(实现邮件发送)
Email就是电子邮件,在Java中如何实现邮件的发送: 电子邮件从用户电脑的邮件软件,例如Outlook,发送到邮件服务器上,可能经过若干个邮件服务器的中转,最终到达对方邮件服务器上,收件方就可以用 ...
- Java GridBagLayout简单电子邮件发送界面的实现
GridBagLayout网格块布局 运行示例: 代码: import java.awt.Component; import java.awt.Frame; import java.awt.GridB ...
- 基于Java实现企业微信群聊机器人-文件上传+消息推送(保证可用)
基于Java实现企业微信群聊机器人-文件上传+消息推送 1.pom.xml(注意版本尽量保持一致) 2.文件工具类 3.企业微信请求类 4.企业微信响应类 5.发送方法 6.企业微信机器人创建和配置 ...
- 档案电子封装包Java类,email: Android电子邮件库(基于JavaMail封装)
Email for Android Email for Android是基于JavaMail封装的电子邮件库,简化在Android客户端中编写发送和接收电子邮件的的代码.把它集成到你的Android项 ...
- 基于Java的SMTP协议邮件发送模拟系统
目录 1. 原理分析 2. 前端页面 3. 数据库设计 4. 后端数据处理 5. 参考文献 6. 注意事项 1. 原理分析 SMTP协议 SMTP(Simple Mail Transfer Proto ...
- 基于Java的设计开题报告_基于Java的电子邮件的收发系统的设计与实现开题报告...
基于Java的电子邮件的收发系统的设计与实现开题报告 (8页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 开题报告 基于 Java 的电子 ...
- java发送gmail_如何在Gmail中轻松通过电子邮件发送人群
java发送gmail Mailing lists are an old tool in the email arsenal, but their implementation in Gmail is ...
最新文章
- VIRTUAL COMMUNITY INFORMATICS
- 157所中国内地高校上榜!最新世界大学学术排名发布
- tab s6 linux on dex,S Pen + DeX模式 三星Galaxy Tab S6让你秒变办公达人
- Struts 动态FORM实现过程
- OK335xS psplash make-image-header.sh hacking
- javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第1部分
- 修改软件许可证使用时间_阮一峰:为什么开源数据库改变许可证?
- 有的网线接口为什么做不到轻薄化?
- MySQL管理之 MyISAM和InnoDB存储引擎简单对比
- PAT 1070. 结绳(25)-乙级
- 龙之谷冰龙linux手工服务端,【网游】【龙之谷】v300冰龙巢穴一键服务端+客户端+GM工具+视频教程...
- ODAC Windows 安装
- es6 7 8 9 10特性归纳
- 电子时钟c语言课题介绍,电子时钟开题报告
- 002.光流传感器(ADNS0380版)使用说明
- python测试用例发送邮件用谷歌浏览器的方式
- Servelt中文乱码问题处理
- 华为Huawei服务器IBMC默认用户密码
- Android 数据线连接单反相机读取照片
- [BX]和内存单元的描述