发邮件(通过发邮件 激活用户/激活链接)

POP3/SMTP服务 (如何使用 Foxmail 等软件收发邮件?)
已关闭 |  开启
IMAP/SMTP服务 (什么是 IMAP,它又是如何设置?)
已关闭 |  开启
Exchange服务 (什么是Exchange,它又是如何设置?)
已关闭 |  开启
CardDAV/CalDAV服务 (什么是CardDAV/CalDAV,它又是如何设置?)
已关闭 |  开启 

 

常见的如在某网站注册了一个账户,自动发送一封激活邮件,通过邮件找回密码,自动批量发送活动信息等

电子邮件协议

        1. 创建/发送邮件协议: smtp : simple mail transfer protocol  简单邮件传输协议
        2. 接收邮件协议: pop3 .

邮件发送流程


        发送一份邮件--smtp--->邮件服务器(管理和存储邮件)<---pop3---接收邮件
      比如: http协议: hyper text transfer protocol ,规范了浏览器<---->服务器


发邮件的操作步骤


       1. 搭建邮件服务器
       2. 创建一个服务器端的邮件账号
       3. 创建客户端的邮件账号
       比如: 服务器端的账号: server@tedu.cn
            客户端账号: a@tedu.cn  b@tedu.cn
            a账号发送邮件给b账号
       比如:  a@tedu.cn--smtp协议,发送邮件-->server@tedu.cn<--pop3协议,收邮件--b@tedu.cn
       注意:
          搭建的邮件服务器通过网络进行邮件的发送和接收,配置邮件的域名时,必须是公网域名.
          如果没有公网域名,这时是无法通过网络收发邮件.
       比如: 易邮邮件服务器(设置公网域名或者局域网域名),企业自己搭建邮件服务器,收发邮件没有任何费用
            如果用腾讯或者163等等,付费.
    *  网络收发邮件,可以通过已知的邮箱作为邮件服务器,比如: 126, 163,qq等等作为邮件服务器.
       操作步骤:
               步骤一: 进入到邮箱网页的设置页面,开通smtp,pop3协议.
               步骤二: 写代码进行邮件的发送,需要导入邮件依赖(spring-boot-starter-mail)
       java.mail核心api
       1.邮件对象: MimeMessage,设置邮件的标题,邮件的发送者,接收者,邮件正文,邮件附件
                  接受者:
                    收件人: 邮件直接发送给谁
                    抄送: 在发送邮件时,同时给某个账号发送, 这个账号就是抄送者
                    暗送: 在发送邮件时,同时给某个账号发送, 这个账号就是暗送者
                    区别: 抄送和 暗送
                    抄送者: 可以同时抄送多个账号,并且多个抄送者互相知道
                            比如: a, b抄送者, a知道b收到邮件了, b也知道a收到邮件
                    暗送者: 可以同时暗送多个账号,并且多个抄送者互相知道
                            比如: a, b暗送者, a不知道b收到邮件了, b也不知道a收到邮件
       2.会话对象: Session,建立与邮件服务器的连接
       3.发送者对象: Transfer, 发送邮件对象

写代码:

1、依赖的添加

<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>

2、代码的编写

package cn.tedu;

import com.sun.mail.util.MailSSLSocketFactory;

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

public class EmailUtil {
    //IWLOBIEHYWOLCIVC
    private static final String SHOUQUANMA = "XILABMOOESCJOUTD";//自己邮箱设置时,得到授权码
    public static MimeMessage createSimpleMail(Session session, String authCode, String emailAddresss)
            throws Exception {
        // 创建邮件对象
        MimeMessage message = new MimeMessage(session);
        // 指明邮件的发件人: henanxuluo@126.com,使用126邮箱作为邮件服务器
        message.setFrom(new InternetAddress("henanxuluo@126.com"));
        // 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(emailAddresss));
        // 邮件的标题
        message.setSubject("激活链接");
        // 邮件的文本内容
        message.setContent("点击激活<a href='#'>" + authCode + "</a>", "text/html;charset=UTF-8");
        // 返回创建好的邮件对象
        return message;
    }


    public static void sendEmail(String mima,String emailAddresss) throws Exception {
        Properties prop = new Properties();//比如: Properties等价的application.properties
        // 开启debug调试,以便在控制台查看
        prop.setProperty("mail.debug", "true");
        // 设置邮件服务器主机名
        prop.setProperty("mail.host", "smtp.126.com");//邮件服务器: 设置的发送协议
        // 发送服务器需要身份验证
        prop.setProperty("mail.smtp.auth", "true");//作为邮件服务器需要发送邮件,输入密码(授权码安全点)
        // 发送邮件协议名称
        prop.setProperty("mail.transport.protocol", "smtp");
        // 开启SSL加密,否则会失败
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable", "true");
        prop.put("mail.smtp.ssl.socketFactory", sf);
        
        // 创建session: 与126邮件服务器建立了连接
        Session session = Session.getInstance(prop);
        // 通过session得到transport对象
        Transport ts = session.getTransport();
        // 连接邮件服务器:邮箱类型,帐号,授权码代替密码(更安全)
        ts.connect("smtp.126.com", "henanxuluo", SHOUQUANMA);
        // 创建邮件
        Message message = createSimpleMail(session,mima,emailAddresss);
        // 发送邮件
        ts.sendMessage(message, message.getAllRecipients());
        ts.close();
    }

    public static void main(String[] args) throws Exception {
        sendEmail("123456","henanxuluo@126.com");
    }
}

其他关联文档

利用java实现发送邮件

javaMail学习(一)——易邮邮件服务器的使用

javaMail学习(二)——邮箱客户端Foxmail的使用

javaMail学习(三)——使用javaMail给易邮邮账户发简单邮件

javaMail学习(四)——使用javaMail给网易账户发简单邮件

javaMail学习(五)——使用javaMail给Q Q 邮 箱 账 户 发简单邮件

javaMail学习(六)——使用javaMail给QQ邮箱账户发简单邮件时碰到的问题

javaMail学习(七)——使用javaMail发复杂邮件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值