美文网首页
javaMail(一)

javaMail(一)

作者: 云鲸鱼rain | 来源:发表于2018-09-18 14:58 被阅读0次

最近在工作中用到邮件的功能比较多,发邮件,收邮件,解析邮件。
首先还是奉上大牛的链接,https://www.cnblogs.com/ysocean/p/7666061.html,大牛的博客中对邮件的各种功能,包括底层原理剖析的一干二净。在此多谢大牛在前方的指路,让我们少走很多弯路。
结合自己工作中的实际情况,做下总结,便于日后复习查看。(仅供自己学习记录)
1、发邮件服务器:STMP。收邮件服务器:POP3,IMAP。
2、无论收发邮件,最根本的就是连接上邮箱的服务器和自己的邮箱。所以几个参数一定要准备好。

//发邮件
Properties props = new Properties();
//设置用户的认证方式
props.setProperty("mail.smtp.auth", "true");
//设置传输协议
props.setProperty("mail.transport.protocol", "smtp");
//设置发件人的SMTP服务器地址
props.setProperty("mail.smtp.host", "smtp.163.com");
//收邮件
Properties props = new Properties();
//设置传输协议
props.setProperty("mail.store.protocol", "pop3");
//设置收件人的POP3服务器
props.setProperty("mail.pop3.host", "pop3.163.com");

代码是用网易作为例子,更换其他邮箱,自然去找到其他邮箱的服务器地址。
3、连接到收件箱之后,如果邮箱只做中转站,并不存放邮件,那么就把邮件删掉。

//删除邮件
message.setFlag(Flags.Flag.DELETED, true);

4、不能虎头蛇尾,在最后需要把邮件对象关闭。

//发邮件
//关闭邮件连接
transport.close();
//收邮件
//关闭邮件夹对象
folder.close();
//关闭连接对象
store.close();

5、发邮件的时候,邮件内容包括图片和附件的情况。
MimeBodyPart 和 MimeMultipart 的用法。
MimeBodyPart 是普通节点,用来创建文本节点和图片节点。因为文本和图片都算邮件正文内容,所以文本节点和图片节点之间必然存在关系。这时将两个普通节点添加到混合节点MimeMultipart中,再通过setSubType方法建立关联关系。
因为邮件内容需要的是普通节点,所以组合之后的混合节点需转化成普通节点。

//图片节点
MimeBodyPart image = new MimeBodyPart();
//文本节点
MimeBodyPart text = new MimeBodyPart();
//混合节点
MimeMultipart mm_text_image = new MimeMultipart();
mm_text_image.addBodyPart(text);
mm_text_image.addBodyPart(image);
//关联关系
mm_text_image.setSubType("related");
转化成普通节点
MimeBodyPart text_image = new MimeBodyPart();
text_image.setContent(mm_text_image);

添加附件是同样的道理,但是实际中遇到的问题是附件名中文乱码,用以下方法解决。

//附件节点
MimeBodyPart attachment = new MimeBodyPart();
//设置附件的文件名(需要编码)
attachment.setFileName(MimeUtility.encodeText("文件名"));

6、实际应用中,经常会有在某网站通过通过绑定邮箱注册账号的需求。进入自己邮箱点击链接即可激活成功。通过在慕课网的学习,也总结如下:

class User{
  private Integer uid;//主键
  private String username;//账号
  private String password;//密码
  private String email;//绑定邮箱
  private Integer state;//是否激活成功 1:激活成功 0:未激活成功
  private String code;//激活码
}

state来判断账号是否在服务器申请成功。默认为0,当邮箱绑定成功之后,状态值改为1。账号申请成功。
code通过uuid来生成。

public String getUUID{
  return UUID.randomUUID().toString().replace("-","");
}

相关文章

  • javaMail(一)

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

  • 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.haomeiwen.com/subject/dgiynftx.html