Java SE基于Java Email发送邮件

文章目录

  • 一、Java Email
  • 二、准备工作
  • 三.具体操作
    • 1.创建会话
    • 2.准备数据
      • 1.创建邮件对象
      • 2.准备数据
      • 3.创建复合对象
    • 3.发送数据
  • 四.总结


一、Java Email

JavaMail是提供开发者处理Email相关的编程接口,Java SE 中的Java Email未被添加至JDK的标准库里,需手动下载第三方库,但Java EE中Java Email为JDK的标准库。

二、准备工作

通过126邮箱将邮件发送至QQ邮箱,首先在126邮箱网页中的设置将POP3/SMTP服务打开、增加授权如图所示:
在这里插入图片描述
在这里插入图片描述
新增的授权密码仅提供一次,切记保存。

三.具体操作

1.创建会话

设置使用的服务器地址、账户及密码,创建会话:传入的参数为Properties 类、Authenticator类,创建Properties对象将主机号、端口号、是否需验证、启用STL加密添加至其中、创建Authenticator类的匿名类重写getPasswordAuthentication()方法将账户名和密码传入。
代码如下(示例):

		// stmp服务器地址String smtp = "smtp.126.com";// 创建账户和密码String username = "LiuJiaMan516@126.com";String psd = "************";// 1.创建Smtp服务器的连接信息Properties props = new Properties();props.put("mail.smtp.host", smtp); // smtp主机props.put("mail.smtp.port", "25"); // smtp端口号props.put("mail.smtp.auth", "true"); // 是否需要用户认证props.put("mail.smtp.starttls.enable", "true"); // 启用STL加密// 创建sessionSession session = Session.getInstance(props, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// TODO Auto-generated method stubreturn new PasswordAuthentication(username, psd);}});// 开启调试模式session.setDebug(true);

2.准备数据

1.创建邮件对象

创建邮件对象将会话对象传入其中,设置发件人和收件人及标题。

// 2.创建邮件对象
MimeMessage message= new MimeMessage(session);
message.setFrom(new InternetAddress("LiuJiaMan516@126.com")); // 发件人
message.setRecipient(RecipientType.TO, new InternetAddress("995184008@qq.com"));// 收件人
message.setSubject("来自外太空的邮件", "utf-8"); // 标题

2.准备数据

邮件的内容为:正文和附件,读取本地磁盘中的图片为附件,通过附件中的图片引用至正文中。

// ①.创建正文内容对象
BodyPart textPart = new MimeBodyPart();
StringBuilder body = new StringBuilder();
// ②设置标题
body.append("

复仇者者联盟

"
); // ③正文内容 body.append("外星喵人喊你干饭了...."); // ⑥通过内容的id引用【正文引用附件】 body.append("\"cid:diaochan\"/>"); // ⑦将正文添加至BodyPart textPart.setContent(body.toString(), "text/html;charset=utf-8"); // ⑧创建附件对象 BodyPart image = new MimeBodyPart(); // ⑨设置文件名称 image.setFileName("lazy.jpg"); // ⑩从本地磁盘读取图片 image.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.readAllBytes(Paths.get("E://JavaTest//ccc//QQ20220522160440.jpg")),"application/octet-stream"))); // 设置附件ID image.setHeader("Content-ID", "");

3.创建复合对象

复合对象即为:正文部分和附件部分

// 4.创建复合对象
Multipart multiPart = new MimeMultipart();
// 将BodyPart添加至multiPart中
multiPart.addBodyPart(textPart);
multiPart.addBodyPart(image);
// 将复合对象添加至邮件对象中
message.setContent(multiPart);

3.发送数据

将数据通过Transport类的send()方法将数据发送至QQ邮箱。

// 5.发送数据
Transport.send(message);

四.总结

Java Email发送邮件大致可分为:创建会话、创建邮件、邮件内容、发送邮件。传输数据SMTP协议基于TCP/IP协议进行数据的传输,即发送数据前要建立连接。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部