javaMail使用心得

想要做一个java发送邮件小功能。

使用的maven搭建的项目。

<!-- https://mvnrepository.com/artifact/javax.mail/mail --><dependency>    <groupId>javax.mail</groupId>    <artifactId>mail</artifactId>    <version>1.4.7</version></dependency>

如果要手动引入jar包,则需要引入两个jar包;

以下是我的代码:

public class Mail {    //发送人信息    public static String myEmailAccount = "。。。。@163.com"; //邮箱    public static String myEmailPassword = "。。。。。"; //密码

//发送邮箱信息    //发送人邮箱的SMTP服务器地址,必须准确,不同邮箱服务器地址一般不同,    public static String toEmailSMTPHost = "smtp.163.com"; //网易邮箱    public static String toEmailAccount = "。。。。。@163.com"; //收件人邮箱

//主函数    public static void main(String[] args) throws Exception {

//1.创建参数配置,用于连接邮件服务器        Properties props = new Properties();        props.setProperty("mail.transport.protocol","smtp");//声明使用协议        props.setProperty("mail.smtp.host",toEmailSMTPHost);//确定邮箱的服务器地址        props.setProperty("mail.smtp.auth","true");//需要请求验证

/**         * PS  某些邮箱服务器要求SMTP连接需要使用SSL安全认证,为了提高安全性,邮箱支持         * SSL连接,也可以自己开启;如果服务器无法连接右键服务器,仔细查看控制台打印的log         * **/

/**         *   下面代码为打开SSL连接的SMTP服务,         *  SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接,         *  需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助,QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)         *

final String smtpPort = "465";         props.setProperty("mail.smtp.port",smtpPort);         props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");         props.setProperty("mail.smtp.socketFactory.fallback","false");         props.setProperty("mail.smtp.socketFactory.port",smtpPort);         **/

//2.根据配置创建会话对象,用于和邮件服务器交互        Session session = Session.getDefaultInstance(props);        session.setDebug(true);

//3.创建一封邮件        MimeMessage message = createMimeMessage(session,myEmailAccount,toEmailAccount);

//4.根据Session 获取邮件传输对象        Transport transport = session.getTransport();

/**         * 5. 使用邮箱账号 和 密码 连接右键服务器,这里认证的邮箱必须与 message 中的发件人邮箱一致,否则报错         * PS——01:成败的判断关键在此一句,如果连接服务器失败,都会在控制台输出相应失败原因的log         * 仔细查看失败原因,有些邮箱服务器会返回错误码或者查看错误类型的连接,根据给出的错误类型对应的邮件服务器         * 的帮助网站上查看具体失败原因         *         * PS——02:连接失败的原因通常有几下几点,仔细检查代码:         * 1.邮箱没有开启SMTP服务         * 2.邮箱密码错误,例如某些邮箱开启了独立密码;         * 3.邮箱服务器要求必须要使用SSL安全连接;         * 4.请求过于频繁或其他原因,被邮件服务器拒绝服务;         *         *         * PS--03:仔细看log,认真看log,看懂log,错误原因都在log已说明。         *         */        transport.connect(myEmailAccount,myEmailPassword);

//6. 发送邮件,发送所有的收件地址,message.getAllRecipients()获取到的是在创建邮件对象添加的所有收件人,抄送人,密送人        transport.sendMessage(message,message.getAllRecipients());

//7. 关闭连接        transport.close();    }

/**     * 创建一封只包含文本的简单邮件     *  @param session 和服务器交互的会话     *  @param sendMail 发件人邮箱     *  @param toEmailAccount 收件人邮箱     *     * **/

public static MimeMessage createMimeMessage(Session session, String sendMail,                                                String toEmailAccount)throws Exception {        //1.创建一封邮件        MimeMessage message = new MimeMessage(session);

//2. From 发件人        message.setFrom(new InternetAddress(sendMail,"哈哈","UTF-8"));

//3 To 收件人(可以增加多个收件人,抄送,密送)        message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(toEmailAccount,                "美女","UTF-8"));

//4.Subject:邮件主题        message.setSubject("来,聊聊天","UTF-8");

//5. Content: 邮件正文(可以使用html标签)        message.setContent("何冰玲美女,今晚没下雨哈","text/html;charset=UTF-8");

// 6.设置发件时间        message.setSentDate(new Date());

//7. 保存设置        message.saveChanges();

return message;    }}

期间产生的错误:

1.错误码550:

步骤

1. 登录自己的163邮箱,注意,要用你的应用程序中设置的邮箱地址去登录。

2. 在主菜单栏上的“设置”子菜单里面,选择POP3/SMTP/IAMP菜单。

3. 若没有开启“客户端授权密码”,则选择将其开启。开启后,会给你生成一个应用授权密码。要用这个生成的密码作为java mail API发送邮件的认证密码,如此,才能解除500密码,若用邮箱的登录密码去设置这个认证密码,会遇到500的错误。下图是开启“客户端授权密码”功能后的截图:

设置上面之后会产生535错误代码:原因如下:

//发送人信息public static String myEmailAccount = "。。。。。。; //邮箱public static String myEmailPassword = "。。。。。。; //密码

这里的密码不是你设置的邮箱登陆密码,而是客户端授权密码。

时间: 2024-10-21 11:53:59

javaMail使用心得的相关文章

Spring与JavaMail

JavaMail与Spring集成开发 spring框架集成JavaMail的主要包 2.mail.properties mail.smtp.host=smtp.163.com mail.smtp.auth=true mail.username=15511111111 mail.password=123 [email protected] 3.使用spring配置(applicationContext-mail.xml) <?xml version="1.0" encoding=

java-基于JavaMail的Java邮件发送

1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送

Delphi组件indy 10中IdTCPServer修正及SSL使用心得

indy 10终于随着Delphi2005发布了,不过indy套件在我的印象中总是复杂并且BUG不断,说实话,不是看在他一整套组件的面子上,我还是喜欢VCL原生的Socket组件,简洁,清晰.Indy9发展到了indy10几乎完全不兼容,可叹啊.言归正传.在使用IdTCPServer组件的时候发现了他的漏洞,他的OnConnec,OnExecute,OnDisconnect等事件是在其他线程中执行的,通常情况下这没有问题,但是在特殊的情况下会造成问题,如果其他部分的程序写得有问题就会出现漏洞.

Linux系统理解以及Linux系统学习心得

原创作品转载请注明出处  <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 作者:严哲璟 说一下我对Linux系统的理解 1.加载Linux内核准备:在加载基本输入输出模块(BIOS)之后,从磁盘的引导扇区读入操作系统的代码文件块到内存中,之后开始整个系统的初始化. 2.main.c的start_kernel函数是整个操作系统的入口,这也与Linux是基于C语言的特性相符,start_kernel具体做的动作很多

参加老男孩linux培训心得

参加老男孩linux培训心得 时间如白驹过隙,已经不知不觉来到老男孩培训已经三个月了.在这三个月中我渐渐得到了成长,专业技术成长,以及为人处事之道与思想的提高. 我一共就总结以下了三点     一.思想 在我刚来老男孩的时候,老师天天上课前讲一段思想,我当时不太明白,不赶紧上课,讲这干啥呢?而且老师早一点讲完,又可以招下一批学生了,老讲思想,这不是自断财路么?随着时间的流逝,渐渐的我悟懂了点.人在那里都可以学技术,但是学会了技术没有思想,一旦来了新事物,就会接受的很慢.尤其在互联网这个圈子里,软

Linux串口IO模式的一些心得

众所周知,在Linux系统下所有设备都是以文件的形式存在,串口也一样. 通常I/O操作都是有阻塞与非阻塞的两种方式. 其中"超时"这个概念其实是阻塞中的一种处理手段,本质还是属于阻塞的I/O模式. 在Linux中串口的IO操作 本文将它分为三种状态: 阻塞状态 超时状态 非阻塞状态 这三种状态的转换组合有这么几种: 阻塞 --> 超时 阻塞 --> 非阻塞 超时 --> 阻塞 超时 --> 非阻塞 非阻塞 --> 阻塞 我们一个一个来分析 首先在一个串口的

使用JavaMail发送邮件和接受邮件

一. 为什么要学习JavaMail 为什么要学习JavaMail开发? 现在很多WEB应用在开发时都需要集成邮件发送功能,例如: 1. 给新注册的用户自动发送一封包含其注册信息的欢迎E-Mail. 2. 给过生日的注册会员自动发送一封表示祝贺的E-Mail. 3. 将网站的最新活动信息通过E-Mail发送给所有的注册会员. 二. 邮件服务器和协议 1. 邮件服务器: 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.so

我的MYSQL学习心得(八)

我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 这一篇<我的MYSQL学习心得(七)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (

《不要让我思考》读后心得2

---内容开始--- Don't let me think! 这本书以网站可用性为目的,从作者自身工作和经验角度,站在用户的心理立场上,介绍了作为设计者如何做出可用性的web设计. 其中包含的内容有: 1.别让我思考(定律) 当看到一个不需要思考的网站时: 当看到一个要思考的网站时: @创建一个网站时,要去掉这些问号. 有时候网站会强迫我们思考,名字,常见的罪魁祸首就是改成自以为很酷很聪明的,带有营销色彩的名字. 还有另一个来源是看起来不太明显的链接和按钮,会造成用户犹豫可不可点. @类似的例子