1. 什么是JavaMail

JavaMail是提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容的API。使用JavaMail,我们可以实现类似OutLook、FoxMail的软件。

2. 邮件开发的相关协议

Ø SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议(25号端口)。

Ø POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110)。

Ø IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一

3. IMAP和POP3有什么区别?

4. POP3/IMAP、SMTP之间的区别和联系

简单地说,SMTP管“发”,POP3/IMAP管“收”。

举个例子,你坐在电脑边用mail client写完邮件,点击‘发送’。这时你的mail client会发消息给邮件服务器上的SMTP service。这时有两种情况:

1. 如果邮件的收信人也是处于同一个domain,比如从给163的邮箱,SMTP service只需要转给local的POP3 Service即可

2. 如果邮件收信人是另外的domain,比如

5. 邮件发送的过程

6.API

7.简单邮件发送

7.1pom依赖

javax.mail

mail

1.4.4

7.2发送简单邮件

import org.junit.Test;

import javax.mail.Address;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import java.util.Properties;

public class TestSendSimpleEmail {

@Test

public void test() throws Exception {

//设置发送者的配置信息 Properties properties = new Properties();

//发送者的协议 properties.put("mail.smtp.host","smtp.163.com");

properties.put("mail.smtp.auth","true");

Session session = Session.getInstance(properties);

//设置调试信息在控制台打印出来 session.setDebug(true);

//信息体 MimeMessage message = new MimeMessage(session);

//发信者 Address address = new InternetAddress("17630039316@163.com");

message.setFrom(address);

//收信者 Address toAddress = new InternetAddress("814962461@qq.com");

/*** 设置收件人地址(可以增加多个收件人、抄送、密送)* MimeMessage.RecipientType.TO:发送* MimeMessage.RecipientType.CC:抄送* MimeMessage.RecipientType.BCC:密送*/

message.setRecipient(MimeMessage.RecipientType.TO,toAddress);

//主题 message.setSubject("米西米西");

//正文 message.setText("哈喽啊,饭已ok啦,下来米西吧!!!");

message.saveChanges();

//发送邮件 Transport transport = session.getTransport("smtp");

//登录 transport.connect("17630039316@163.com", "QQ19971015");

transport.sendMessage(message, message.getAllRecipients());

transport.close();

}

}

7.3spring整合发送简单邮件

7.3.1applicationContext-mail.xml

xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util.xsd">

${mail.from}

true

true

0

mail.host=smtp.163.com

mail.username=你的邮箱账户

mail.password=你的邮箱密码

mail.from=你的邮箱

7.3.3测试

package com.email;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.mail.MailSender;

import org.springframework.mail.SimpleMailMessage;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("classpath:applicationContext-mail.xml")

public class TestSpringSendSimpleEmail {

@Autowired

private MailSender mailSender;

@Autowired

private SimpleMailMessage simpleMailMessage;

@Test

public void SingleMailSend () {

simpleMailMessage.setSubject("通知");

simpleMailMessage.setText("这是一个验证码8857");

simpleMailMessage.setTo("1518913949@qq.com");

mailSender.send(simpleMailMessage);

}

}

7.4发送带有图片的邮件

@Test

public void ImageMailSend () throws MessagingException {

JavaMailSenderImpl sender = (JavaMailSenderImpl)mailSender;

MimeMessage mailMessage = sender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true);

messageHelper.setFrom("17630039316@163.com");

messageHelper.setTo("1640281429@qq.com");

messageHelper.setSubject("测试邮件中嵌套图片!!");

// true 表示启动HTML格式的邮件 messageHelper.setText(

"

hello!!spring image html mail

"

+"", true);

FileSystemResource img = new FileSystemResource(new File("d://1.png"));

messageHelper.addInline("image", img);//跟cid一致 sender.send(mailMessage);

System.out.println("邮件发送成功...");

}

7.5发送带附件的邮件

@Test

public void AttachedMailSend() throws MessagingException {

JavaMailSenderImpl sender = (JavaMailSenderImpl)mailSender;

MimeMessage mailMessage = sender.createMimeMessage();

MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true);

messageHelper.setFrom("17630039316@163.com");

messageHelper.setTo("1640281429@qq.com");

messageHelper.setSubject("测试邮件中嵌套附件!!");

// true 表示启动HTML格式的邮件 messageHelper.setText(

"

工资已发放,详细信息请查看附件

", true);

FileSystemResource file = new FileSystemResource(new File("D://1.xlsx"));

messageHelper.addAttachment("工资.xlsx", file);//添加到附件

sender.send(mailMessage);

System.out.println("邮件发送成功...");

}

java邮箱_JavaMail相关推荐

  1. Java邮箱验证错误收集

    Java邮箱验证异常收集 一.身份验证失败异常: 535 Error:ÇëʹÓÃÊÚȨÂëµÇ¼¡£ÏêÇéÇë¿´http://service.mail.qq.com/cgi-bin/help ...

  2. java邮箱格式_JavaMail入门:创建纯文本、HTML格式的邮件

    转自:http://haolloyin.blog.51cto.com/1177454/353849/ 在 http://java.sun.com/products/javamail/ 下载了 Java ...

  3. java发送邮件到qq邮箱_javamail发送邮件(简单邮件qq邮箱)

    /* * com.sun.mail javax.mail 1.5.4 */ /*上面是maven需要添加的依赖*/ package com.weiling.wl_erp.util; import or ...

  4. java邮箱地址正则表达式_Java 中用正则表达式修改 Email 地址

    需求 系统中有一列会用来存储 email 地址,现在需要对输入的字符串进行过滤, 要求是,把无效的地址过滤掉.有一些需要说明的是 这些地址是通过图像识别得到的,有些是用户自己输入的 已有历史记录已经存 ...

  5. java邮箱_java发送邮件(qq邮箱)

    完整的示例代码: package cn.sw.study.common.test; import javax.mail.Message; import javax.mail.Session; impo ...

  6. Java 邮箱判断 正则表达式

    import java.util.Scanner;public final class EmailCheck {public static boolean checkEmail(String emai ...

  7. java邮箱找回密码_java实现邮箱找回密码 简单邮件

    首先 发件人的POP/SMTP服务要打开   发件人的密码为服务的授权码 js方法 //找回密码 function send(){ var lostemail = $("#lostemail ...

  8. java邮箱正则表达式_Java正则表达式详解

    亲爱的小伙伴们,本期我们讲解java中的正则表达式和它相关的一些类与方法. 概述 正则表达式非常强大,能够解决我们开发时用于匹配一些特定的要求.并且java中还提供了相当强大的方法,扩展其功能性.下面 ...

  9. java邮箱验证码_Java实现邮箱验证码

    原标题:Java实现邮箱验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注 ...

最新文章

  1. 关于学习Python的一点学习总结(53)
  2. Vue:Vue的< span >文字怎么加粗?
  3. 大话Django之一:安装与启动
  4. spring应用实例
  5. 在win10企业版x64下使用curl命令
  6. 明令禁止工作“996”,是对“生而为人”的基本尊重
  7. Python之线程(二)
  8. 社群产品定位三种方式
  9. Xna支持中文显示方法归纳
  10. Julia: rand
  11. 第22节项目6-定期存款利息计算器
  12. flea-jersey使用之文件上传接入
  13. 【博文笔记】Attentive Reader\Impatient Reader:机器阅读理解之开山之作Teaching Machines to Read and Comprehend
  14. 大数据决策的误区案例之一
  15. 苹果手机照片流使用方法(iphone我的照片流在哪)
  16. 基于QT(c++)的家庭财务管理系统
  17. python实现图书管理系统——通过excel文件或者TXT文件存放数据
  18. JDK密钥证书管理工具keystore
  19. js监测关闭当前页面、关闭浏览器和取消监测
  20. Android V7包学习笔记更新中.....

热门文章

  1. 前端埋点数据收集及上报方案实战
  2. 【Linux】使用U盘自动化安装Linux(VMware虚拟机)
  3. 人教社免费公布全学段教材电子版(附地址)
  4. 电脑图标变白怎么办?
  5. 市场调研-静脉注射(IV)瓶市场现状及未来发展趋势
  6. 正则表达式匹配数字或者短横杠至多三次,数字可以不填写,学习正则表达式
  7. Simscape基础教程之实例(一)——使用Simscape三维物理仿真自由落体小球碰撞平面
  8. 使用AutoJs实现微信抢红包
  9. NOD32/ESET/EAV/ESS之间的区别是什么?
  10. 项目实施:如何有效的进行ERP培训