1. 邮件协议概述

  • SMTP(Simple Mail Transfer Protocol, 简单邮件传输协议) 发邮件协议;
  • POP3(Post Office Protocol Version 3, 邮局协议第3版) 收邮件协议;
  • IMAP(Internet Message Access Protocol, 因特网消息访问协议)收发邮件协议;

2. 邮件服务器名称

  • SMTP 服务器的端口号为 25,服务器名称为 smtp.xxx.xxx;
  • POP3 服务器的端口号为 110,服务器名称为 pop3.xxx.xxx;

3. JavaMail 发邮件

3.1 导包

  • mail.jar;
  • activition.jar;
  • J2EE javax.mail 包

3.2 核心类

  1. Session

    • 如果得到了它,表示已经与服务器连接上了, 与 Connection 的作用相似.
  2. MimeMessage

    • 它表示一个邮件对象,可以调用它的 setXxx()方法,设置发件人,发件人,主题以及正文等;
  3. TransPort

    • 发邮件;

// 得到 Session, 需要使用 Session.getInstance(Properties, Authenticator);
Properties props = new Properties();
props.setProperty("mail.host","smtp.163.com"); //设置服务器主机名
props.setProperty("mail.smtp.auth","true"); //设置是否需要验证 Authenticator auth = new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("用户名","密码");
}
}; // 得到 session 对象
Session session = Session.getInstance(props,auth);
try{
// 创建 MimeMessage
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddess("用户名@163.com")); // 设置发件人
msg.setRecipients(RecipientType.TO, "收件人@126.com"); // 设置收件人
msg.setRecipients(RecipientType.CC, "收件人@sohu.com"); // 设置抄送
msg.setRecipients(RecipientType.BCC, "收件人@sina.com"); // 设置暗送 msg.setSubject("这是一封测试邮件"); // 设置标题 // 第一种方式: 普通邮件
msg.setContent("下雨天","text/html;charset=utf-8"); //邮件内容 // 第二种方式: 带有附件的邮件
/*
* 当发送包含附件的邮件时, 邮件体为多部件形式!
* 1. 创建一个多部件的部件内容! MimeMultipart
* MimeMultipart 就是一个集合, 用来装载多个主体部件!
* 2. 我们需要创建两个主体部件, 一个是文本内容的, 另一个是附件;
* 主体部件叫 MimeBodyPart
* 3. 把 MimeMultipart 设置给 MimeMessage 的内容!!
*/ MimeMultipart list = new MimeMultipart(); // 创建多部分内容 // 创建 MimeBodyPart
MimeBodyPart part2 = new MimeBodyPart();
// 设置主体部件的内容
part2.setContent("这是测试邮件","text/html;charset=utf-8");
// 把主体部件添加到集合中
list.addBodyPart(part2); // 创建第二个 MimeBodyPart
MimeBodyPart part3 = new MimeBodyPart();
// 设置主体部件的内容
part3.attachFile(new File("c:/浮夸.mp3"));
// 设置显示的文件名称, 其中 encodeText 用来处理中文乱码问题
part3.setFilename(MimeUtility.encodeText("浮夸.avi"));
// 把主体部件添加到集合中
list.addBodyPart(part3); // 把多部件设置给邮件作为邮件的内容
msg.setContent(list); // 发送
Transport.send(msg);
}catch(MessagingException e){
throw new RuntimeException(e);
} // 使用 MailUtils 工具发送邮件
public void fun2() throws Exception{ // 1. 得到 Session 对象
Session session = MailUtils.createSession("smtp.163.com","用户名","密码"); // 2. 创建 Mail 对象
Mail mail = new Mail("发件地址","收件地址","邮件主题","邮件内容"); // 3. 创建附件对象
AttachBean ab = new AttachBean(new File("C:/浮夸.avi"),"浮夸.avi"); // 添加到 mail 中
mail.addAttach(ab); // 发送
MailUtils.send(session,mail);
}

参考资料:

JavaWeb 之邮件发送的更多相关文章

  1. JavaWeb基础—邮件发送

    一.JavaMail概述与入门 JavaMail-java提供的一组API,用来收发邮件 中间有个邮件服务器: 客户端发给邮件服务器,另外一收件客户端从邮件服务器下载(最稳的还是163,QQ有点不靠谱 ...

  2. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  3. J2EE 邮件发送那些事儿

    距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看.虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的.现在有空写写J2EE中邮件发送的开发,实际 ...

  4. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

  5. SSH项目里面 忘记密码的邮件发送功能

    package com.xxx.util; import java.util.Date; import java.util.Properties; import javax.mail.Address; ...

  6. [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作

    这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...

  7. java spring 邮件发送

    开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...

  8. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  9. c#实现邮件发送链接激活

    2016-08-24 10:09:52 public void MailSend(string email) { MailMessage MyMail = new MailMessage(); MyM ...

随机推荐

  1. Centos6.8 下 Node.js 的安装

    思路:采用编译好的文件进行安装 一 使用 wget 下载 到 Node.js 官网(https://nodejs.org/en/download/) 选择要下载的编译版本(Source Code) / ...

  2. 关于Spring管理的类如何创建对象

    今天项目中出现了空指针错误,其实一看这个错误我就知道是哪里错了.而且以前也总是说,没有真正的改过啊.今天把改进方法和大家共享.现在我们的项目中,大多数我们的管理方式都是交由Spring去管理,至于好处 ...

  3. SQL中的ISNULL函数介绍

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...

  4. 使用BMap.Label给百度地图的BMap.Marker上加上数字序号

    marker = new BMap.Marker(pointList[i]) marker.setLabel(getNumberLabel(i)); function getNumberLabel(n ...

  5. atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 h--n v1 q31.xlsx

    atitit.MIZIAN 陕北方言 特有词汇 大词典 attilax 整理 h--n v1 q31.xlsx 1  Mizian陕北方言 english英语 spain西班牙语 cantonese粤 ...

  6. Angularjs学习笔记11_手工初始化

    http://my.oschina.net/fuckBAT/blog/375579 Angular的编译机制允许开发人员给浏览器添加新的Html语法,允许我们添加一些html节点,attribute, ...

  7. ipk CONTROL 目录的作用

    CONTROL文件夹下的文件意义preinst        - shell script,在ipk包开始安装前执行;postinst       - shell script,在ipk包安装后执行; ...

  8. python 旧类中使用property特性的方法

    在python中,我们可以拦截对象的所有特性访问.通过这种拦截的思路,我们可以在旧式类中实现property方法. __getattribute__(self, name) #当特性name被访问时自 ...

  9. 深入理解yum工作原理

    前言 在前面一篇rpm包制作描述了rpm的打包过程,这篇文章主要讲述yum的工作原理. yum 运行原理 yum的工作需要两部分来合作,一部分是yum服务器,还有就是client的yum工具.下面分别 ...

  10. jQuery 和其他 JavaScript 框架

    正如您已经了解到的,jQuery 使用 $ 符号作为 jQuery 的简写. 如果其他 JavaScript 框架也使用 $ 符号作为简写怎么办? 其他一些 JavaScript 框架包括:MooTo ...