JavaMail基本使用

来源:互联网 发布:蔬菜水果网络配送平台 编辑:程序博客网 时间:2024/06/02 23:35

JavaMail基本使用

基本概述

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。

虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。

JavaMail是可选包,因此如果需要使用的话你需要首先从java官网上下载。使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext下。这样JavaMail就安装好了。

JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。
另外很好的实现了JavaMail API的框架有James、Spring Mail。

——《百度百科》

电子邮件

概述

  • 电子邮箱:向服务器申请了一块空间(硬盘的地址),存储着你申请的这个邮箱存放的数据。

    • 电子邮箱(E-mail地址)的获得需要在邮件服务器上进行申请 ,确切地说,电子邮箱其实就是用户在邮件服务器上申请的一个帐户。用户在邮件服务器上申请了一个帐号后,邮件服务器就会为这个帐号分配一定的空间,用户从而可以使用这个帐号以及空间,发送电子邮件和保存别人发送过来的电子邮件。
  • 邮件服务器:

    • 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器。例如现在Internet很多提供邮件服务的厂商:sina、sohu、163等等他们都有自己的邮件服务器。
    • 这些服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中
    • 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器接收邮件的服务器

邮件协议

  • SMTP协议-发邮件协议

    • 全称为Simple Mail Transfer Protocol(简单邮件传输协议),它定义了邮件客户端软件与SMTP服务器之间、以及两台SMTP服务器之间的通讯规则。
    • 端口号:25.
  • POP/POP3协议-收邮件协议

    • 全称为Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。服务器到客户的通讯规则。
    • 端口号:110.

JavaMail使用

package com.pc.user.utils;import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.MimeMessage.RecipientType;import com.pc.user.domain.User;/** * 邮件工具类 *  * @author Switch * @data 2016年10月23日 * @version V1.0 */public class MailUtils {    /**     * 发送邮件     *      * @param user     *            用户Bean     */    public static void sendMail(User user) {        // Session对象(会话)        Properties props = new Properties();        // 邮件服务器在本机        props.setProperty("mail.host", "localhost");        // 邮件服务器在外网需要用下面两个配置替代        // props.setProperty("mail.host", "smtp-mail.outlook.com");        // 外网会强制验证        props.setProperty("mail.smtp.auth", "true");        Session session = Session.getInstance(props, new Authenticator() {            @Override            public PasswordAuthentication getPasswordAuthentication() {                // 邮件服务器在本机                return new PasswordAuthentication("Admin@store.com", "123456");                // 邮件服务器在外网                // return new PasswordAuthentication("*****@163.com","123456");            }        });        // Message对象        Message message = new MimeMessage(session);        try {            // 设置发件人:(最好是与登录名相同)            message.setFrom(new InternetAddress("Admin@store.com"));            // 设置收件人:            message.addRecipient(RecipientType.TO, new InternetAddress(user.getEmail()));            // 设置主题:            message.setSubject("生日快乐");            // 设置内容:            message.setContent("尊敬的用户,祝您生日快乐!", "text/html;charset=UTF-8");            // 3.Transport对象:            Transport.send(message);        } catch (Exception e) {            e.printStackTrace();        }    }}

PS:JavaMail发送邮件案例:GitHub

0 0