如果您对文章有提议, 建议或者任何想表达的, 欢迎在下方评论区留言! 不断交流才是进步的捷径!


上一章我们使用JavaFX Scene Builder画出了第一个按钮组件, 并且成功的获取了组件内容. 

这一章我们将会介绍JavaMail, 并且使用其来尝试发送第一封邮件.


什么是JavaMail?

        Oracle官方推出的包, 用于处理邮件. 官方API文档


下载JavaMail包

        Maven仓库的官方包地址: http://mvnrepository.com/artifact/javax.mail/mail/1.4.7  你也可以直接点击下载

        下载完成后, 将其导入我们的项目.


创建发送邮件工具类EmailUtil

        创建一个类, 类名称叫做EmailUtil, 用于保存有关Email的方法.

        代码如下(请仔细认真阅读, 以便继续接下来的教学! ):

package sample;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;

public class EmailUtil {


    /**
     * 
     * @param username 登录用户名
     * @param password 登录密码
     * @param fromNickname  发件人昵称
     * @param toEmail       收件人邮箱
     * @param toNickname    收件人昵称
     * @param title         邮件主题
     * @param content       邮件内容
     */
    public static void sendEmail(String username, String password, String fromNickname, String toEmail, String toNickname, String title, String content) {

        // 1. 创建参数配置, 用于连接邮件服务器的参数配置
        Properties props = new Properties();                    // 参数配置
        props.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", "smtp.qq.com");   // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.auth", "true");            // 需要请求认证

        // 2. 创建会话
        Session session = Session.getDefaultInstance(props);

        try {

            Transport transport = session.getTransport();

            /* 3. 创建一封邮件 */

            // 3.1. 创建邮件对象
            MimeMessage message = new MimeMessage(session);

            // 3.2. From: 发件人
            message.setFrom(new InternetAddress(username, fromNickname, "UTF-8"));

            // 3.3. To: 收件人
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail, toNickname, "UTF-8"));

            // 3.4. Subject: 邮件主题
            message.setSubject(title, "UTF-8");

            // 3.5. Content: 邮件内容
            message.setContent(content, "text/html;charset=UTF-8");


            /*  使用 邮箱账号 和 密码 连接邮件服务器
                这里认证的邮箱必须与 message 中的发件人邮箱一致,否则报错*/
            transport.connect(username, password);

            //发送邮件
            transport.sendMessage(message, message.getAllRecipients());

            // 关闭连接
            transport.close();
        } catch (MessagingException | UnsupportedEncodingException m) {
            m.printStackTrace();
        }
    }

}



回想一下我们平常发送邮件时需要填写的信息, 登录时需要填写用户名密码, 需要填收件人邮箱, 邮件主题以及邮件内容, 各大邮箱会自动给我们填写发件人以及收件人昵称, 我们这里也需要手动填写.


其中, 

// 1. 创建参数配置, 用于连接邮件服务器的参数配置
        Properties props = new Properties();                    // 参数配置
        props.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", "smtp.qq.com");   // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.auth", "true");            // 需要请求认证

这三个的配置是qq邮箱的配置, 至于其他邮箱的配置, 请查阅各大邮箱的教程


我们可以写一个main方法, 用来测试这个发送邮件的方法是否好用:

java连接qq邮箱客户端 java邮件客户端_java


在这里要注意, 如果用的是QQ邮箱配置的话, 密码填写的应该是授权码, 请查看自己qq邮箱授权码的官方教程


经过测试后, 我们可以收到刚刚发送的邮件, 至此, 我们的发送邮件的方法就写完了.

在下一章, 我们将会完成我们的邮件客户端, 并且比一般的还要美观! (反正是自己画的界面~)

下一章-->




第一个java桌面应用, javafx, 邮件客户端, java开发邮件客户端