JavaMail

作者: 指尖轻敲 | 来源:发表于2019-02-09 18:14 被阅读28次

相关概念

1. 邮箱服务器

就想web要有web服务器一样(tomcat等),邮件也有对应的邮件服务器

2. SMTP协议

用户发送邮件到邮件服务器的协议,处理该请求的服务器称之为SMTP服务器。和POP3协议都属于TCP/IP协议的一员。

3. POP3协议

该协议是用户从邮件服务器接收邮件要遵循的协议,当然处理该请求的服务器称之为POP3服务器。

4. 邮件收发过程

现有场景如下:我要用qq邮箱给小明的163邮箱发一封邮件,首先我要先登录我的邮箱发一封邮件,此时我qq邮箱对应的SMTP服务器接收到我的邮件之后,发送给163邮箱对应的SMTP服务器。这时,小明登录连接163邮箱的POP3服务器就可以接受到邮件了。

环境搭建

安装邮件服务器

这里使用的易邮邮件服务器,安装完成之后,点击工具,选择系统设置进行邮箱域名配置。

image.png

然后新建两个用来测试的账号,账号处填user,默认就会在后面自动添加刚才设置的邮箱域名@junwei.com

image.png
邮箱客户端安装

这里使用的是Foxmail,安装完成之后,把我们刚才新建的用户添加进入。

新建账号.png

然后需要注意一点,要填写服务器的地址,如果是线上正式的邮箱服务器(163等)就要填它们对应的服务器地址。这里我们是本地的服务器所以填localhost

image.png

代码实现发送邮件

// 要连接的服务器,因为是本地所以不用设置主机名
Properties properties = new Properties();
// 创建连接对象,连接邮箱服务器
Session session = Session.getInstance(properties, new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        // 设置用于发送邮件的账号和密码
        return new PasswordAuthentication("user1@junwei.com","123456");
    }
});

// 创建邮件对象
Message message = new MimeMessage(session);
try {
    // 设置发件人,这里需要传入一个地址对象,而不是地址的字符串,所有用InternetAddress转一下
    message.setFrom(new InternetAddress("user1@junwei.com"));

    // 设置收件人,TO:收件人,CC:抄送人,BCC:秘密抄送人
    message.setRecipient(Message.RecipientType.TO, new InternetAddress("user2@junwei.com"));

    // 设置邮件主题
    message.setSubject("我是测试邮件的主题");
    // 设置正文
    message.setContent("<h1>我是正文</h1>", "text/html; charset=UTF-8");
    Transport.send(message);
} catch (MessagingException e) {
    e.printStackTrace();
}
用户激活邮件实现步骤
  1. 用户点击注册,服务端向服务器存一个用户对象,该对象包含用户填写的信息和是否激活的状态(初始设为0未激活),还应该有一个用户对应的激活码(服务端生成)

  2. 通过上面的代码想用户填写的邮箱发送一封激活邮件。该邮件包含一个激活链接(带有激活码参数的)。

  3. 用户点击激活链接,服务端接收到这个激活码,然后取数据库查找。如果查到了该用户,就把该用户的激活状态修改为(1已激活)。

  4. 修改完激活状态之后,说明该用户可以登录了,服务端进行页面跳转,跳转到登录页面。

相关文章

  • JavaMail 混淆规则

    JavaMail For Android 混淆规则

  • JavaMail

    JavaMail发送邮件工具类 }

  • 乐字节-Spring 邮件发送

    Spring 邮件发送 主要内容 JavaMail 概述 ​ JavaMail,顾名思义,提供给开发者处理电子邮件...

  • JavaMail

    相关概念 1. 邮箱服务器 就想web要有web服务器一样(tomcat等),邮件也有对应的邮件服务器 2. SM...

  • James+Javamail构建邮箱服务(二)

    1 Javamail的高级应用 1.1 用Javamail实现对邮件的查找 在邮件的高级应用中,当遇到某个帐户中的...

  • Javamail 使用局部代理

    昨天分享了Javamail如何配置icloud邮箱拉取邮件,目前线上job运行良好。传送门 Javamail接收i...

  • JavaMail for Android

    JavaMail for Android Google OAuth Client Library for Java

  • java邮件发送线程阻塞

    看tomcat日志 DEBUG: setDebug: JavaMail version 1.4.3 DEBUG: ...

  • JavaMail for Android

    发送带复件的邮件 防坑: 以HTML形式发送text, 防止被当成垃圾文件. 添加抄送 降低163 [554 DT...

  • javaMail(一)

    最近在工作中用到邮件的功能比较多,发邮件,收邮件,解析邮件。首先还是奉上大牛的链接,https://www.cnb...

网友评论

      本文标题:JavaMail

      本文链接:https://www.haomeiwen.com/subject/dcixjqtx.html