一、只带有纯文本的邮件

  代码事例如下:

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邮件开发的更多相关文章

  1. 19、文件上传与下载/JavaMail邮件开发

    回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...

  2. JavaMail 邮件开发

    (api  + 配置) 开发中,邮件的应用? -à 注册,填写生日:  后期系统会自动发送生日祝贺   -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[ ...

  3. Java-Mail邮件开发

    Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务. 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互 ...

  4. 传智播客张孝祥java邮件开发随笔01

    01_传智播客张孝祥java邮件开发_课程价值与目标介绍 02_传智播客张孝祥java邮件开发_邮件方面的基本常识 03_传智播客张孝祥java邮件开发_手工体验smtp和pop3协议 第3课时 关于 ...

  5. javamail邮件Multipart支持同时发text和html混合消息,alternative纯文本与超文本共存

    javamail邮件Multipart支持同时发text和html混合消息alternative纯文本与超文本共存 multipart/mixed:附件. multipart/related:内嵌资源 ...

  6. java深入探究10-文件上传组件FileUpload,邮件开发

    1.文件上传组件FileUpload 1)java提供了文件上传的工具包 需要引入:commons-fileupload-1.2.1.jar(文件上床组件核心包) commons-oi-1.4(封装了 ...

  7. 【JavaWeb项目】一个众筹网站的开发(九)邮件开发

    Java官方支持邮件开发,Javax-mail jdk中默认没有,需要另外下载 apache的基于Javax-mail开发了commons-mail,更加简单高效,推荐使用 一.电子邮件接收和发送协议 ...

  8. Java邮件开发(JavaMail)

    Sun发布的用来处理email的API,它可以方便地执行一些常用的邮件传输.JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一 ...

  9. JavaMail邮件发送不成功的那些坑人情况及分析说明

    [我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言   JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...

随机推荐

  1. node.js--HTTP模块

    HTTP模块 node.js提供了一个创建自己服务器的方式,用起来很简单,首先引用http模块 //引用HTTP模板 var http = require('http'); 创建服务实例:http.c ...

  2. GridView中超链接设置

    <%# Eval("id") %>Bind方式    <%# Bind("id","~/info.aspx?id={0}" ...

  3. Kalman滤波器原理和实现

    Kalman滤波器原理和实现 kalman filter Kalman滤波器的直观理解[1] 假设我们要测量一个房间下一刻钟的温度.据经验判断,房间内的温度不可能短时大幅度变化,也就是说可以依经验认为 ...

  4. 在windows和linux下如何查看80端口占用情况?是被哪个进程占用?如何终止等

    一.在windows下如何查看80端口占用情况?是被哪个进程占用?如何终止等 这里主要是用到windows下的DOS工具,点击"开始"--"运行",输入&quo ...

  5. SOAPUI测试步骤之断言测试(Assertion TestStep)

    什么是没有办法验证结果的测试?soapUI提供了两种方法来测试断言:断言TestSteps现在断言一步步测试(PRO版本).The Assertion TestStep,扩展了断言处理和管理的想法.此 ...

  6. [转]七天学会NodeJS

    转:http://nqdeng.github.io/7-days-nodejs/ NodeJS基础 什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS, ...

  7. [Java] 利用LinkedHashMap来实现LRU Cache

    http://www.acmerblog.com/leetcode-lru-cache-lru-5745.html https://oj.leetcode.com/discuss/1188/java- ...

  8. [深入浅出WP8.1(Runtime)]Socket编程之UDP协议

    13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...

  9. [深入浅出WP8.1(Runtime)]浮出控件(Flyout)

    4.15 浮出控件(Flyout) 浮出控件(Flyout)是一个轻型的辅助型的弹出控件,通常会作为提示或者要求用户进行相关的交互来使用.Flyout控件与Windows Phone里面的弹出框Mes ...

  10. background常用属性

    background-image:url('图片位置');//设置背景图片的位置 background-repeat:no-repeat;//图片是否重复显示(不重复) background-posi ...