JavaMail简单版实验测试
前言:
最近由于实现web商城的自动发送邮件功能的需求,故涉猎的邮箱协议的内部原理。现将简单版的Java Mail实例做个代码展示,并附上其中可能出现的bug贴出,方便感兴趣的读者进行测试!
1.载入相关jar包
客户端传输邮件需要用的jar包:activation.jar和mail.jar
(下载:https://github.com/SeaSky0606/share)
2.JavaMail代码实现
package com.seasky.mail; import java.util.Properties; import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; public class Mail { /**
* @param args
*/
public static void main(String[] args) { //属性设置,创建会话
Properties properties = new Properties();
properties.setProperty("mail.transport.protocol", "smtp");
Session session = Session.getInstance(properties);
session.setDebug(true); //设置debug模式
//创建Message对象
Message message = new MimeMessage(session);
try {
message.setSubject("我是主题");
message.setFrom(new InternetAddress("soft03_test@sina.com"));
message.setContent("<h2>我是内容</h2>", "text/html;charset=utf-8"); //创建接口,并连接(登录)
Transport transport = session.getTransport();
transport.connect("smtp.sina.com", "soft03_test", "soft03_test");
//发送邮件
transport.sendMessage(message, new Address[]{new InternetAddress("123456789@qq.com"),
new InternetAddress("soft03_test@sina.com")});
} catch (MessagingException e) {
e.printStackTrace();
}finally{
System.out.println("---finish--");
} } }
登录测试邮箱查看:

3.Debug模式下打印出smtp连接建立的过程
DEBUG: setDebug: JavaMail version 1.4.1
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "smtp.sina.com", port 25, isSSL false
220 smtp-2-33.smtpsmail.fmail.yf.sinanode.com ESMTP
DEBUG SMTP: connected to host "smtp.sina.com", port: 25 EHLO CJH
250-smtp-2-33.smtpsmail.fmail.yf.sinanode.com
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-STARTTLS
250 8BITMIME
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
c29mdDAzX3Rlc3Q=
334 UGFzc3dvcmQ6
c29mdDAzX3Rlc3Q=
235 OK Authenticated
DEBUG SMTP: use8bit false
MAIL FROM:<soft03_test@sina.com>
250 ok
RCPT TO:<123456789@qq.com>
250 ok
RCPT TO:<soft03_test@sina.com>
250 ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP: 123456789@qq.com
DEBUG SMTP: soft03_test@sina.com
DATA
354 End data with <CR><LF>.<CR><LF>
From: soft03_test@sina.com
Message-ID: <535071474.0.1446284102239.JavaMail.Administrator@CJH>
Subject: =?UTF-8?B?5oiR5piv5Li76aKY?=
MIME-Version: 1.0
Content-Type: text/html;charset=utf-8
Content-Transfer-Encoding: base64 PGgyPuaIkeaYr+WGheWuuTwvaDI+
.
250 ok queue id 2476333014883
---finish--
4.常见问题:
1.出现包冲突
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
没有找到相关的内部类错误,即说明存在 jar包冲突!
解决方法:
去除开发环境的内部javaEE包,或者删除其内部java.mail下面的所有类!
2.注册的实验邮箱测试失败
535 5.7.8 authentication failed
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
at javax.mail.Service.connect(Service.java:169)
at com.seasky.mail.JMailTest.main(JMailTest.java:35)
---finish--
解决方法:
由于实验测试邮箱可能需要开通vip,所以建议直接使用本样例中的新浪邮箱的账号密码(soft03_test/soft03_test)!
JavaMail简单版实验测试的更多相关文章
- 刨根问底系列(3)——关于socket api的原子操作性和线程安全性的探究和实验测试(多线程同时send,write)
多个线程对同一socket同时进行send操作的结果 1. 概览 1.1 起因 自己写的项目里,为了保证连接不中断,我起一个线程专门发送心跳包保持连接,那这个线程在send发送数据时,可能会与主线程中 ...
- MySQL数据库执行计划(简单版)
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库执行计划简单版时间:2019年2月25日内容:MySQL数据库执行计划简单版重点:MySQL ...
- 云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
云优化的概念.Entity Framework 7.0.简单吞吐量压力测试 继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之 ...
- 红警大战JAVA简单版
代码结构: 相关源码: 武器类: 属性:武器,攻击力,子弹数量. 方法:给属性赋值(set属性()方法) 获取属性值(get属性()方法) package 红警大战简单版; public class ...
- TOJ 3973 Maze Again && TOJ 3128 简单版贪吃蛇
TOJ3973传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=3973 时间限制(普通 ...
- Go语言之进阶篇简单版并发服务器
1.简单版并发服务器 示例1: package main import ( "fmt" "net" "strings" ) //处理用户请求 ...
- echarts怎么使用(最最最最简单版)(本质canvas)
echarts怎么使用(最最最最简单版)(本质canvas) 一.总结 一句话总结:外部扩展插件肯定要写js啊,不然数据怎么进去,不然宽高怎么设置.本质都是canvas嵌套在页面上,比如div中. 1 ...
- 下载文件时-修改文件名字 Redis在Windows中安装方法 SVN安装和使用(简单版) WinForm-SQL查询避免UI卡死 Asp.Net MVC Https设置
下载文件时-修改文件名字 1后台代码 /// <summary> /// 文件下载2 /// </summary> /// <param name="Fil ...
- Jmeter教程 简单的压力测试
Jmeter教程 简单的压力测试:http://www.cnblogs.com/TankXiao/p/4059378.html
随机推荐
- iOS百度地图SDK集成详细步骤
1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本 ...
- Django model.py表单的默认值 默认允许为空
Field.null 默认是null=False,这时不能传入NULL型数据,但是可以是空字符. 如果BooleanField中想要null数据类型,可以选择NullBooleanField Fi ...
- 学习Maven之Properties Maven Plugin
1.properties-maven-plugin是个什么鬼? 介绍前我们先看一个问题,比如我们有一个maven项目结构如下: 一般我们都把一些配置文件放到像src/main/resources/jd ...
- yum安装mysql和mysql源,配置mysql
申明,不要用root安装 1. 下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm ...
- Linux LVM学习总结——放大LV容量
本篇介绍LVM管理中的命令lvresize,我们先创建一个卷组VG VolGroup02,它建立在磁盘/dev/sdc (大小为8G)上.创建逻辑卷LV时,我们故意只使用了一小部分.具体情况如下所示 ...
- SQL Server 复制快照执行错误 错误代码 14068
问题描述: 使用基于快照初始化的事务复制,在上次发布的时候,添加项,执行快照agent,报错,错误信息: Error messages:Message: The subscription status ...
- 3. Python 简介
3. Python 简介 下面的例子中,输入和输出分别由大于号和句号提示符 ( >>> 和 ... ) 标注:如果想重现这些例子,就要在解释器的提示符后,输入 (提示符后面的) 那些 ...
- [WPF系列]从基础起步学习系列计划
引言 WPF技术已经算不什么新技术,一搜一大把关于WPF基础甚至高级的内容.之前工作中一直使用winform所以一直没有深入学习WPF,这次因项目中使用了WPF技术来实现比较酷的展示界面.我在这里只是 ...
- UI自动化,你值得拥有
去年春节联欢晚会,为了那张“敬业福”,全家都卯足了劲儿“咻一咻”,连节目都顾不上看了.当时我就想,要是能自动化该多好,不停点击屏幕,屏幕不疼手还疼呢,何况还不好分心,生怕错过了“敬业福”.玩“咻一咻” ...
- hdu[1711]number sequence
Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], .... ...