JavaMail发送邮件的笔记及Demo
最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误:

网络上搜索解决方式,多次尝试后发现了问题,原来是我的163邮箱账号没有开启客户端授权,因此也就没有开启SMTP服务,这是无法用javamail程序作为发件人发送邮箱的,于是在设置里开始授权及服务之后,满心欢喜的再次运行,悲哀的是又报了另一个错误:

无奈再次开始调试,最后终于发现了问题,正如网友说的,因为你验证的邮箱用户名和你发送的时候添写的邮箱地址不一样,SMTP服务器驳回了你的请求,我在验证的时候使用的我自己的163邮箱,在设置发信人的时候,误把xxxxxx@163.com写成了xxxxxxx@qq.com(不能忍),改正过来以后,如愿以偿,终于可以发送邮件了,以下是代码和注释:
/**
* javamail发邮件
* @throws Exception
* @throws AddressException
*/
@Test
public void sendMailDemo() throws Exception{ /**
* 1.得到session
*/ // Properties是Session的属性对象,用于封装针对SMTP的一些常用属性
Properties props=new Properties();
//设置smtp服务器地址
props.setProperty("mail.host", "smtp.163.com");
//设置SMTP服务器是否需要用户认证,默认为false,设为true
props.setProperty("mail.smtp.auth", "true"); Authenticator auth=new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//注意:下面的登录用户名是@前边的内容,如果你的账号是haha@163.com,只需要输入haha
return new PasswordAuthentication("邮件服务器登录用户名", "登录密码");
}
}; Session session = Session.getInstance(props,auth);
/**
* 2.创建MimeMessage
*/
MimeMessage msg=new MimeMessage(session); //设置发件人
msg.setFrom(new InternetAddress("发送方邮箱账号"));
//设置收件人
msg.setRecipients(RecipientType.TO,"接受方邮箱账号");
//设置抄送
msg.setRecipients(RecipientType.CC,"邮箱账号");
//设置主题
msg.setSubject("javamail发送邮件Demo");
//设置内容
msg.setContent("我是邮件","text/html;charset=utf-8"); /**
* 3.发送
*/
Transport.send(msg); }
下面在介绍一下发送带附件的邮件需要修改的代码,只需要将上面的:
msg.setContent("我是邮件","text/html;charset=utf-8")
替换成下面的代码即可:
MimeMultipart list=new MimeMultipart();
//创建MimebodtPart
MimeBodyPart part1=new MimeBodyPart();
part1.setContent("这是一封包含附件的垃圾邮箱","text/html;charset=utf-8");
list.addBodyPart(part1);
//创建MimebodtPart
MimeBodyPart part2=new MimeBodyPart();
//设置附件内容
part2.attachFile(new File("e:/照片/me.jpg"));
//设置显示的文件名 顺便解决乱码问题
part2.setFileName(MimeUtility.encodeText("哎哟,不错哦.jpg"));
list.addBodyPart(part2);
msg.setContent(list);
JavaMail发送邮件的笔记及Demo的更多相关文章
- JavaMail发送邮件
发送邮件包含的内容有: from字段 --用于指明发件人 to字段 --用于指明收件人 subject字段 --用于说明邮件主题 cc字段 -- 抄送,将邮件发送给收件人的同时抄 ...
- JavaMail发送邮件第一版
首先,我们先来了解一个基本的知识点,用什么工具来发邮件? 简单的说一下,目前用的比较多的客户端:OutLook,Foxmail等 顺便了解一下POP3.SMTP协议的区别: POP3,全名为" ...
- web应用中使用JavaMail发送邮件
现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...
- web应用中使用JavaMail发送邮件 。。转载
现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...
- (转载)JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件
博客源地址:http://www.cnblogs.com/xdp-gacl/p/4220190.html 现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件 ...
- JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件
现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...
- javamail发送邮件的简单实例
今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...
- javamail发送邮件的简单实例(转)
今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 注意:要先导入javamail的mail.jar ...
- javamail发送邮件的简单实例(转)
javamail发送邮件的简单实例 今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码 ...
随机推荐
- HTML5可视化编辑与微数据
1.HTML 5 全局 contenteditable 属性 contenteditable 属性规定是否可编辑元素的内容. <p contenteditable="true" ...
- C++ 小知识积累
(1)setw和setfill函数 #include<iomanip> 代码: #include<iostream> #include<iomanip> using ...
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法(转)
从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了.1,警告:“xoxoxoxo” is deprecated解决办法:查看xoxoxoxo的这个方法的文档,替换 ...
- 不需要sql进行计算数据的平均值、最大值、最小值、和
介绍下SqlServer.前端js.后台C#三个阶段对均值.最大值.最小值.和计算int[] jisuan = {0, 1, 3, 5, 7,8 }; List<int> jisuan2 ...
- Oracle EBS - Doc
Oracle EBS spec.: http://vianet/IT/IT%20Dept/IT%20Project%20Update2/Active%20Projects%20%20Manufactu ...
- Git生成ssh ksy后进行项目管理
1.首先你要有一个git账号,然后在网站上Create a New Repository,填好名称后就建立了一个仓库,之后即会出现一些仓库的配置信息... 2.然后你要下载一个git客户端,也可以是m ...
- XCod5 SVN
近日开始学习IOS开发, 涉及版本管理问题,老大说要使用SVN, 在Windows系统中使用SVN的经验使得俺以为需要首先安装SVN,然后再配置等等, 殊不知XCode5中已经内置了SVN, 在百度一 ...
- .Net 跨平台可移植类库PCL可用于任何平台包括Mono
Microsoft 在 .NET Framework 4 中添加了一个名为可移植类库 (PCL) 的新功能. 利用 PCL,您可以有选择性地面向 .NET Framework.Silverlight ...
- 剑指Offer面试题:1.实现Singleton模式
说来惭愧,自己在毕业之前就该好好看看<剑指Offer>这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及.但是后悔是没用的,现在趁还有余力,把这本书好好看一遍,并通过C#通通实 ...
- 剑指Offer面试题:31.两个链表的第一个公共节点
一.题目:两个链表的第一个公共节点 题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义如下,这里使用C#语言描述: public class Node { public int key; p ...