最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的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的更多相关文章

  1. JavaMail发送邮件

    发送邮件包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄 ...

  2. JavaMail发送邮件第一版

    首先,我们先来了解一个基本的知识点,用什么工具来发邮件? 简单的说一下,目前用的比较多的客户端:OutLook,Foxmail等 顺便了解一下POP3.SMTP协议的区别: POP3,全名为" ...

  3. web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  4. web应用中使用JavaMail发送邮件 。。转载

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  5. (转载)JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4220190.html 现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件 ...

  6. JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  7. javamail发送邮件的简单实例

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...

  8. javamail发送邮件的简单实例(转)

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 注意:要先导入javamail的mail.jar ...

  9. javamail发送邮件的简单实例(转)

    javamail发送邮件的简单实例 今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码 ...

随机推荐

  1. 关于IOS浏览器:document,body的click事件触发规则

    今天做了个手机页面,点击某个按钮->弹出菜单,再点击菜单以外的任意位置->关闭菜单,在其他浏览器里面没有问题,但是在IOS浏览器中并不会关闭. 网上解决这个bug的帖子很多,这篇帖子主要是 ...

  2. C#上位机制作之串口接受数据(利用接受事件)

    前面设计好了界面,现在就开始写代码了,首先定义一个串口对象.. SerialPort serialport = new SerialPort();//定义串口对象 添加串口扫描函数,扫描出来所有可用串 ...

  3. MYSQL删除重复数据

     delete from co_jobinformation cwhere c.name in (select cc.name from co_jobinformation cc group by   ...

  4. sqL编程篇(三) 游标与存储过程

    sql编程2 游标与存储过程 sql编程中的游标的使用:提供的一种对查询的结果集进行逐行处理的一种方式不用游标的处理解决方式:逐行修改工资update salar set 工资=‘新工资’ where ...

  5. jQuery模仿淘宝商品评价

    最近做项目要做个商品评价的功能,我直接就跑到淘宝那里去研究了,可看着晕晕的,还不知道他是怎么做的,于是把图抠了下来,自己写了一个,接下来就展示一下我是怎么做的,大家有不同的实现方法可要记得分享一下呀. ...

  6. Unity - 接入Android SDK

    在网络上,关于Unity与Android如何进行交互,雨松MOMO大神已经有两篇文章简单介绍了如何操作(1)Unity3D研究院之打开Activity与调用JAVA代码传递参数(2)Unity3D研究 ...

  7. MySQL 注册码

    最近开发是用MySQL数据库,之前安装后,每次打开Navicat Premium 都提示 “试用一个月”,“ 注册”,然后为了方便,就都选择了 试用的, 一个月后,就必须的输入注册码,(还有一个是 什 ...

  8. io.js的服務器突破

    Node.js与io.js那些事儿 InfoQ中文站 05月20日 14:26 去年12月,多位重量级Node.js开发者不满Joyent对Node.js的管理,自立门户创建了io.js.io.js的 ...

  9. DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

    前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...

  10. ADO.NET的弹性连接控制[ADO.NET idle connection resiliency]

    ADO.NET连接SQL Server有时候联机会无故的中断 (例如闲置过久或是交易时间太长等因素),这时又要重新连接,在.NET Framework 4.5之前,这件事情要由开发人员自己依照ADO. ...