Java Mail学习整理

1.加载jar包
        mail.jar ,    

        commons-email-X.X.jar ,    

        activation.jar    

         <dependency>
            <groupId>commons-email</groupId>
            <artifactId>commons-email</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>activation</artifactId>
            <version>1.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.2</version>
        </dependency>

2.写个mail对象
        package com.study.bean;
        import java.io.Serializable;
        /**
         *
         * Mail属性实体
         *
         */
        @SuppressWarnings("serial")
        public class Mail {
            public static final String ENCODEING = "UTF-8";    

            private String host; // 服务器地址    

            private String sender; // 发件人的邮箱    

            private String receiver; // 收件人的邮箱    

            private String name; // 发件人昵称    

            private String username; // 账号    

            private String password; // 密码    

            private String subject; // 主题    

            private String message; // 信息(支持HTML)    

            public String getHost() {
                return host;
            }    

            public void setHost(String host) {
                this.host = host;
            }    

            public String getSender() {
                return sender;
            }    

            public void setSender(String sender) {
                this.sender = sender;
            }    

            public String getReceiver() {
                return receiver;
            }    

            public void setReceiver(String receiver) {
                this.receiver = receiver;
            }    

            public String getName() {
                return name;
            }    

            public void setName(String name) {
                this.name = name;
            }    

            public String getUsername() {
                return username;
            }    

            public void setUsername(String username) {
                this.username = username;
            }    

            public String getPassword() {
                return password;
            }    

            public void setPassword(String password) {
                this.password = password;
            }    

            public String getSubject() {
                return subject;
            }    

            public void setSubject(String subject) {
                this.subject = subject;
            }    

            public String getMessage() {
                return message;
            }    

            public void setMessage(String message) {
                this.message = message;
            }
        }    

3.写个工具类            

        package com.study.service.impl;
        import org.apache.commons.mail.EmailException;
        import org.apache.commons.mail.HtmlEmail;
        import org.apache.log4j.Logger;    

        import com.study.bean.Mail;
        /**
         * Created by QD-ZHENGWP on 16/07/19.
         *
         * 邮件发送工具实现类
         *
         */
        public class MailUtill {    

            protected final Logger logger = Logger.getLogger(getClass());    

            public boolean send(Mail mail) {
                // 发送email
                HtmlEmail email = new HtmlEmail();
                try {
                    // 这里是SMTP发送服务器的名字:163的如下:"smtp.163.com"
                    email.setHostName(mail.getHost());
                    // 字符编码集的设置
                    email.setCharset(Mail.ENCODEING);
                    // 收件人的邮箱
                    email.addTo(mail.getReceiver());
                    // 发送人的邮箱
                    email.setFrom(mail.getSender(), mail.getName());
                    // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
                    email.setAuthentication(mail.getUsername(), mail.getPassword());
                    // 要发送的邮件主题
                    email.setSubject(mail.getSubject());
                    // 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签
                    email.setMsg(mail.getMessage());
                    // 发送
                    email.send();
                    if (logger.isDebugEnabled()) {
                        logger.debug(mail.getSender() + " 发送邮件到 " + mail.getReceiver());
                    }
                    return true;
                } catch (EmailException e) {
                    e.printStackTrace();
                    logger.info(mail.getSender() + " 发送邮件到 " + mail.getReceiver()
                            + " 失败");
                    return false;
                }
            }
        }    

4.测试            

         public static void test(){
                Mail mail = new Mail();
                mail.setHost("smtp.163.com"); // 设置邮件服务器
                mail.setSender("[email protected]");//发件人
                mail.setReceiver("[email protected]"); // 接收人
                mail.setUsername("[email protected]"); // 登录账号,一般都是和邮箱名一样吧
                mail.setPassword("haokaili1124"); // 发件人邮箱的登录密码
                mail.setSubject("hello大家好");
                mail.setMessage("我是小小小小鸟");
                new MailUtill().send(mail);    

            }    
时间: 2024-10-13 07:40:30

Java Mail学习整理的相关文章

java密码学学习整理--对称加密(着重描述3des)

1.对称加密要点 对称加密算法的核心是加密和解密操作使用同一套密钥.加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 2.des(参考自:http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin) DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的

Java注解学习整理

java提供了四种元注解,专门负责新注解的创建工作.每当你创建描述符性质的类或者接口时,一旦其中包含重复性的工作,就可以考虑使用注解来简化与自动化该过程 @Target 表示该注解可用于什么地方,可能的ElementType包括: CONSTRUCTOR:构造器的声明 FIELD : 域声明(包括enum实例) LOCAL_VARIABLE : 局部变量声明 METHOD : 方法声明 PACKAGE : 包声明 PARAMETER : 参数声明 TYPE : 类.接口(包括注解类型)或   e

Java线程学习整理--4---一个简单的生产者、消费者模型

 1.简单的小例子: 下面这个例子主要观察的是: 一个对象的wait()和notify()使用情况! 当一个对象调用了wait(),那么当前掌握该对象锁标记的线程,就会让出CPU的使用权,转而进入该对象的等待池中等待唤醒,这里说明一下,每一个对象都有一个独立的等待池和锁池! 等待池:上述的wait()后的线程会进入等待池中,处于下图线程声明周期(简单示意图) 中的这个状态,等待池中的线程任然具有对象的锁标记,但是处于休眠状态,不是可运行状态! 当该对象调用notify方法之后,就会在等待池中系统

Java线程学习整理--3--简单的死锁例子

1.线程死锁的概念: 简单地理解下吧! 我们都知道,线程在执行的过程中是占着CPU的资源的,当多个线程都需要一个被锁住的条件才能结束的时候,死锁就产生了! 还有一个经典的死锁现象: 经典的“哲学家就餐问题”,5个哲学家吃中餐,坐在圆卓子旁.每人有5根筷子(不是5双),每两个人中间放一根,哲学家时而思考,时而进餐. 每个人都需要一双筷子才能吃到东西,吃完后将筷子放回原处继续思考,如果每个人都立刻抓住自己左边的筷子,然后等待右边的筷子空出来,同时又不 放下已经拿到的筷子,这样每个人都无法得到1双筷子

Java线程学习整理--2---加入另一个线程join

1.join简介: 今天刚学的,这里我简单总结一下,join本身就是“加入”的意思,那么在线程中是什么意思呢?是在一个线程的run方法执行过程中,当特殊情况下需要执行一些其他的操作的时候,我们会用到join这个方法. 假设: 在执行A线程的时候,在A的run方法中,创建 了一个新的线程B,并且启动了,那么接下来分为2种情况: (1):B没有调用join方法: 这个时候A线程和B线程其实是处于同一个级别状态的,A.B线程可以说是竞争关系,共同争夺CPU的使用权限. 不存在那个一定在前执行,那个一定

Java线程学习整理--1--守护线程

1.什么是守护线程? 今天老师讲解我才知道有守护线程这回事!原来守护线程经常存在于我们的身边,比如:一个免费的网页游戏,里面都会或多或少有些插入性的广告!! 一般情况下,我们不会去点击这些广告的,但是广告商是需要点击量的啊!所以制作游戏的人会背地里使用守护线程去访问这个广告界面,但是我们用户是不知道 的!就是守护线程一般对用户不可见,对背后的程序员可见! 再比如:我们使用的QQ软件,我们可以一边聊天,一边更新QQ软件!当我们聊天结束,关闭QQ的时候,你会发现,QQ更新的操作也被终止了! 其实:更

java中反射学习整理

转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力. java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接.反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活应用代码的主要工具.需要注意的是,如果使用不当,反射的成本会很高. package

这是一套Java菜鸟到大牛的学习路线之高级教程,由工作了10年的资深Java架构师整理。

这是一套Java菜鸟到大牛的学习路线之高级教程,由工作了10年的资深Java架构师整理.        01-java高级架构师设计-基础深入        J2SE深入讲解        Java多线程与并发库高级应用视频教程下载        java反射机制        java设计模式视频        数据结构视频教程        Eclipse视频教程.zip        MyEclipse视频教程.zip    02-java高级架构师设计-JavaEE拓展        A

你要Java学习指南来了!整理了一份零基础Java系统学习路线送给你们!

这里整理一份 Java 的学习路线,希望对想要学习 Java 还没有头绪的小伙伴有所帮助~ 第一阶段.学习 JavaSE 第二阶段.HTML+CSS   js+jQuery   第三阶段.学习JavaEE:jsp+servlet   数据库:MySQL+Oracle (建议先学MySQL)   第四阶段.框架SSH(Struts2+Spring+Hibernate)   SSM(Spring+SpringMVC+mybatis)   大致就是这些了,相信小伙伴们学完这些,学习能力已经有了很大的提