我们经常会听到各种各样的邮件协议,比如SMTP、POP3、IMAP,那么这些协议有什么作用,有什么区别?我们先来讨论一下这个问题。

    SMTP是一个基于TCP/IP的应用层协议,江湖地位有点类似于HTTP,SMTP服务器默认监听的端口号为25。看到这里,小伙伴们可能会想到既然SMTP协议是基于TCP/IP的应用层协议,那么我是不是也可以通过Socket发送一封邮件呢?回答是肯定的。

    生活中我们投递一封邮件要经过如下几个步骤:

    1.深圳的小王先将邮件投递到深圳的邮局2.深圳的邮局将邮件运送到上海的邮局3.上海的小张来邮局取邮件

    这是一个缩减版的生活中邮件发送过程。这三个步骤可以分别对应我们的邮件发送过程,假设从发送邮件到111@163.com

    先将邮件投递到腾讯的邮件服务器2.腾讯的邮件服务器将我们的邮件投递到网易的邮件服务器3.111@163.com登录网易的邮件服务器查看邮件

    邮件投递大致就是这个过程,这个过程就涉及到了多个协议,我们来分别看一下。

    首先我们需要先登录QQ邮箱网页版,点击上方的设置按钮:

    然后点击账户选项卡:

    p267

    在账户选项卡中找到开启POP3/SMTP选项,如下:

    点击开启,开启相关功能,开启过程需要手机号码验证,按照步骤操作即可,不赘述。开启成功之后,即可获取一个授权码,将该号码保存好,一会使用。

    如果我们只发送一个简单的文本,发送方式就比较简单,整个过程可以分为三步如下:

    第一步:构造SMTP邮件服务器的基本环境

    第二步:构造邮件

    第三步:发送邮件

    复杂邮件

    发送复杂邮件,第一步和第三步也是一样的,只有第二步构造邮件的过程比较麻烦,那么接下来给小伙伴们演示一个发送一封图文+两个附件的邮件。要发送复杂邮件,得先熟悉三个概念,如下:

    1.MimeMessage:该类是个能理解MIME类型和头的电子邮件消息2.MimeMultipart:该类定义了增加、删除以及获取邮件不同部分内容的方法3.MimeBodyPart:该对象代表一个MimeMessage对象内容的一部分。每个MimeBodyPart被认为有两部分:MIME类型和匹配这个类型的内容

    完整的邮件生成过程如下(第一步和第三步参考上文):