一、只带有纯文本的邮件

  代码事例如下:

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. 每天一个linux命令--awk

    统计计算日志 pmail@app2linux04 performance]$ grep 'user:logBehaviorAction' performance.log|awk -F '|' '{pr ...

  2. 在Spring-Mybatis-Restful中配置多数据源的properties文件

    在Spring的配置文件中,如下: <?xml version="1.0" encoding="utf-8"?> <beans xmlns=& ...

  3. HDU 2818 (矢量并查集)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2818 题目大意:每次指定一块砖头,移动砖头所在堆到另一堆.查询指定砖头下面有几块砖头. 解题思路: ...

  4. UVA 11754 (暴力+中国剩余定理)

    题目链接: http://www.bnuoj.com/v3/problem_show.php?pid=20172 题目大意:有C个模方程,每个方程可能有k余数,求最小的S个解. 解题思路: 看见模方程 ...

  5. ACM: hdu 2647 Reward -拓扑排序

    hdu 2647 Reward Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Des ...

  6. ACM: 限时训练题解-Street Lamps-贪心-字符串【超水】

    Street Lamps   Bahosain is walking in a street of N blocks. Each block is either empty or has one la ...

  7. js的隐含参数(arguments,callee,caller)使用方法

    在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数.[function.]arguments[ ...

  8. 【noiOJ】p1794

    t1794:集合加法 查看 提交 统计 提问 总时间限制:  3000ms 内存限制:  65536kB 描述 给出2个正整数集合A = {pi | 1 <= i <= a},B = {q ...

  9. 《少有人走的路:心智成熟的旅程》--[美]M·斯科特·派克

    <少有人走的路>,美国作家M·斯科特·派克所著 下面是我的书摘: * 归根到底,它告诉我们怎样找到真正的自我. * 人可以拒绝任何东西,但绝对不可以决绝成熟.决绝成熟,实际上就是在规避问题 ...

  10. 纪念逝去的岁月——C++实现一个队列(使用类模板)

    1.代码 2.运行结果 1.代码 #include <stdio.h> #include <string.h> template <typename T> clas ...