JavaMail邮件开发
一、只带有纯文本的邮件
代码事例如下:
package com.lyh.sendemail; import java.util.Properties; import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; //发送邮件
public class MessageDemo1 { public static void main(String[] args) throws Exception{
Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置
props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
// props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关 Session session = Session.getInstance(props);//发送邮件时使用的环境配置
session.setDebug(true);
MimeMessage message = new MimeMessage(session); //设置邮件的头
message.setFrom(new InternetAddress("xxx@163.com"));
message.setRecipients(Message.RecipientType.TO, "xxx@qq.com");
message.setSubject("This is second message");
//设置正文
message.setContent("<h1>hello</h1>", "text/html");
// message.setText("<h1>hello</h1>");//纯文本 message.saveChanges(); //发送邮件
Transport ts = session.getTransport();
ts.connect("xxx@163.com", "123456"); // 密码为授权码不是邮箱的登录密码
ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法}
}
}
二、带有图片的邮件
a、复杂邮件封装模型
代码事例
package com.lyh.sendemail; import java.util.Properties; import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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.MimeMultipart; //发送邮件
public class MessageDemo2 { public static void main(String[] args) throws Exception{
Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置 props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
// props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关 Session session = Session.getInstance(props);//发送邮件时使用的环境配置
session.setDebug(true);
MimeMessage message = new MimeMessage(session); //设置邮件的头
message.setFrom(new InternetAddress("xxx@163.com"));
message.setRecipients(Message.RecipientType.TO, "xxx@qq.com");
message.setSubject("This is second message");
//设置正文 //搞出文本部分
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent("aaa<img src='cid:mm'/>aaa", "text/html"); //搞图片部分
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.setContentID("mm");
//把磁盘上的文件加到part中使用到了JAF框架
DataHandler dh = new DataHandler(new FileDataSource("src/0.jpg"));
imagePart.setDataHandler(dh); MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(textPart);
mp.addBodyPart(imagePart);
mp.setSubType("related");//有关系的 message.setContent(mp);
message.saveChanges(); //发送邮件
Transport ts = session.getTransport();
ts.connect("xxx@163.com", "123456"); //密码为授权码不是邮箱的登录密码
ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法
}
}
三、带有文本、图片、附件的邮件
代码事例:
package com.lyh.sendemail; import java.util.Properties; import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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.MimeMultipart;
import javax.mail.internet.MimeUtility; //发送邮件
public class MessageDemo3 { public static void main(String[] args) throws Exception{ Properties props = new Properties();//key value:配置参数。真正发送邮件时再配置 props.setProperty("mail.transport.protocol", "smtp");//指定邮件发送的协议,参数是规范规定的
props.setProperty("mail.host", "smtp.163.com");//指定发件服务器的地址,参数是规范规定的
// props.setProperty("mail.debug", "true");//邮件发送的调试模式,参数是规范规定的
props.setProperty("mail.smtp.auth", "true");//请求服务器进行身份认证。参数与具体的JavaMail实现有关 Session session = Session.getInstance(props);//发送邮件时使用的环境配置
// session.setDebug(true);
MimeMessage message = new MimeMessage(session); //设置邮件的头
message.setFrom(new InternetAddress("xxx@163.com"));
message.setRecipients(Message.RecipientType.TO, "xxxqq.com");
message.setSubject("这是一封复杂的邮件");
//设置正文 //搞出文本部分
MimeBodyPart textPart = new MimeBodyPart();
textPart.setContent("美女<img src='cid:mm'/>aaa", "text/html;charset=UTF-8"); //搞图片部分
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.setContentID("mm");
//把磁盘上的文件加到part中使用到了JAF框架
DataHandler dh = new DataHandler(new FileDataSource("src/0.jpg"));
imagePart.setDataHandler(dh); MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(textPart);
mp.addBodyPart(imagePart);
mp.setSubType("related");//有关系的 MimeBodyPart textImagePart = new MimeBodyPart(); //将 MimeMultipart 添加到 MimeBodyPart实现附件的发送
textImagePart.setContent(mp); //创建附件部分
MimeBodyPart attachmentPart = new MimeBodyPart();
dh = new DataHandler(new FileDataSource("src/账户.rar"));
String filename = dh.getName();
attachmentPart.setDataHandler(dh); //手工设置文件名 防止乱码使用 javaMail里的 MimeUtility进行编码
attachmentPart.setFileName(MimeUtility.encodeText(filename)); //最终的 MimeMultipart
MimeMultipart finalMp = new MimeMultipart();
finalMp.addBodyPart(attachmentPart);
finalMp.addBodyPart(textImagePart); finalMp.setSubType("mixed"); message.setContent(finalMp);
message.saveChanges(); //发送邮件
Transport ts = session.getTransport();
ts.connect("xxx@163.com", "123456"); //密码为授权码不是邮箱的登录密码
ts.sendMessage(message, message.getAllRecipients());//对象,用实例方法 }
}
JavaMail邮件开发的更多相关文章
- 19、文件上传与下载/JavaMail邮件开发
回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...
- JavaMail 邮件开发
(api + 配置) 开发中,邮件的应用? -à 注册,填写生日: 后期系统会自动发送生日祝贺 -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[ ...
- Java-Mail邮件开发
Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务. 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互 ...
- 传智播客张孝祥java邮件开发随笔01
01_传智播客张孝祥java邮件开发_课程价值与目标介绍 02_传智播客张孝祥java邮件开发_邮件方面的基本常识 03_传智播客张孝祥java邮件开发_手工体验smtp和pop3协议 第3课时 关于 ...
- javamail邮件Multipart支持同时发text和html混合消息,alternative纯文本与超文本共存
javamail邮件Multipart支持同时发text和html混合消息alternative纯文本与超文本共存 multipart/mixed:附件. multipart/related:内嵌资源 ...
- java深入探究10-文件上传组件FileUpload,邮件开发
1.文件上传组件FileUpload 1)java提供了文件上传的工具包 需要引入:commons-fileupload-1.2.1.jar(文件上床组件核心包) commons-oi-1.4(封装了 ...
- 【JavaWeb项目】一个众筹网站的开发(九)邮件开发
Java官方支持邮件开发,Javax-mail jdk中默认没有,需要另外下载 apache的基于Javax-mail开发了commons-mail,更加简单高效,推荐使用 一.电子邮件接收和发送协议 ...
- Java邮件开发(JavaMail)
Sun发布的用来处理email的API,它可以方便地执行一些常用的邮件传输.JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一 ...
- JavaMail邮件发送不成功的那些坑人情况及分析说明
[我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言 JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...
随机推荐
- WPF文字排列方式解析zz
WPF文字的处理是一个比较基础的技能.在使用WPF开发工具时,对于各种文字的处理时经常会遇到的情况.希望大家可以通过实践经验的积累,牢固掌握这一方面知识. AD:WOT2014:用户标签系统与用户 ...
- 2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)
I. Sale in GameStore(贪心) time limit per test 2 seconds memory limit per test 512 megabytes input sta ...
- iOS之04-方法的声明和实现
本次重点学习和理解OC对象方法的声明和定义 代码: /* 计算器类 方法: 1> 返回 π 2> 计算某个整数的平方 3> 计算两个整数的和 */ #import <Found ...
- ccc 多点触控2
经过不断的思考发现,如果是两个sprite都添加触控的时候,往往直接成单点触控, 但是如果是两个node的时候在node上面点击就会变成多点触控的形式 cc.Class({ extends: cc.C ...
- CSS z-index 属性的使用方法和层级树的概念
之前有一篇文章提到过z-index,我们知道只有在元素设置了position部位static时才生效,而且z-index也跟父元素有关系,今天就在ie7遇到类似问题,在网上查了一些资料,发现一篇好文章 ...
- NOI模拟赛Day4
看到成绩的时候我的内心** woc第一题写错了呵呵呵呵呵呵呵呵 人不能太浪,会遭报应的** ------------------------------------------------------ ...
- 升级到EF6 两个注意事项
1.依据MSDN的官方描述: In previous versions of EF the code was split between core libraries (primarily Syste ...
- Java_CookieUtil
package com.willow.util; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequ ...
- Js中的window.parent ,window.top,window.self 详解
在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...
- LVS DR脚本 解析
vip.sh #!/bin/bash 192.168.2.240 broadcast 192.168.2.240 netmask 255.255.255.255 up route add -host ...