热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javamail实现发送接收邮件Demo

2019独角兽企业重金招聘Python工程师标准项目要引入mail.jar包。发送文字邮件没什么可具体说的,直接看Demo。有两种方式实现,一种支

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

项目要引入mail.jar包。发送文字邮件没什么可具体说的,直接看Demo。有两种方式实现,一种支持html,另一种不支持。还简单实现了添加图片附件。比较复杂的是接收邮件,特别是QQ邮箱,由于腾讯邮箱的安全机制,必须在QQ邮箱内设置开启STMP、POP等协议权限,过后会研究实现这个功能,再作补充

import java.io.IOException;
import java.util.Properties;import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;public class SendMailDemo {public static void main(String[] args) throws MessagingException, IOException {/* **************** 发送邮件 *************** */final Properties properties = System.getProperties();properties.put("mail.smtp.auth", "true");properties.put("mail.smtp.host", "smtp.126.com");//host的协议根据自己的邮箱决定properties.put("mail.user", "邮箱帐号@126.com");properties.put("mail.password", "邮箱密码");//认证信息Authenticator authenticator = new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication(){String account = properties.getProperty("mail.user");String password = properties.getProperty("mail.password");return new PasswordAuthentication(account, password);}};//获取邮件sessionSession session = Session.getInstance(properties, authenticator);MimeMessage mimeMessage = new MimeMessage(session);//发送人InternetAddress from = new InternetAddress(properties.getProperty("mail.user"));mimeMessage.setFrom(from);//接收人InternetAddress accept = new InternetAddress("接收邮箱帐号@qq.com");/*** Type参数说明* Message.RecipientType.TO 收件人* Message.RecipientType.CC 抄送* Message.RecipientType.BCC 密送*/mimeMessage.setRecipient(RecipientType.BCC, accept);//主题mimeMessage.setSubject("this is a test mail to Lin");//设置正文方式一:直接添加,支持html//mimeMessage.setContent("请访问我们的官网", "text/html;charset=utf-8");//设置正文方式二:multipart,支持但是不支持html(可添加附件)Multipart multipart = new MimeMultipart();BodyPart messageBodyPart = new MimeBodyPart();messageBodyPart.setText("请访问我们的官网");multipart.addBodyPart(messageBodyPart);//添加附件/*messageBodyPart = new MimeBodyPart();String filename = "G:/MyImages/海贼王5.jpeg?s=#34;;DataSource source = new FileDataSource(filename);messageBodyPart.setDataHandler(new DataHandler(source));messageBodyPart.setFileName(filename);multipart.addBodyPart(messageBodyPart);*/mimeMessage.setContent(multipart);//发送邮件Transport.send(mimeMessage);/* **************** 接收邮件 *************** */final Properties recevieprop = System.getProperties();recevieprop.put("mail.pop3.host", "pop.126.com");recevieprop.put("mail.user", "邮箱帐号@126.com");recevieprop.put("mail.password", "邮箱密码");//recevieprop.put("mail.pop3.ssl.enable", "true");//QQ邮箱需要设置sslStore store = session.getStore("pop3");store.connect(recevieprop.getProperty("mail.pop3.host"), recevieprop.getProperty("mail.user"), recevieprop.getProperty("mail.password"));Folder folder = store.getFolder("INBOX");folder.open(Folder.READ_ONLY); //int size = folder.getMessageCount();Message[] messages = folder.getMessages();System.out.println(messages.length);}}

 


转:https://my.oschina.net/u/2428684/blog/687650



推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射)
    提升视觉效果:Unity3D中的HDR与Bloom技术(高动态范围成像与光线散射) ... [详细]
  • 出库管理 | 零件设计中的状态模式学习心得与应用分析
    出库管理 | 零件设计中的状态模式学习心得与应用分析 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 深入理解Java中的多态性概念及其应用
    多态是面向对象编程中的三大核心特性之一,与封装和继承共同构成了面向对象的基础。多态使得代码更加灵活和可扩展,封装和继承则为其提供了必要的支持。本文将深入探讨多态的概念及其在Java中的具体应用,帮助读者全面理解和掌握这一关键知识点。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 在C#编程中,设计流畅的用户界面是一项重要的任务。本文分享了实现Fluent界面设计的技巧与方法,特别是通过编写领域特定语言(DSL)来简化字符串操作。我们探讨了如何在不使用`+`符号的情况下,通过方法链式调用来组合字符串,从而提高代码的可读性和维护性。文章还介绍了如何利用静态方法和扩展方法来实现这一目标,并提供了一些实用的示例代码。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Spring框架中枚举参数的正确使用方法与技巧
    本文详细阐述了在Spring Boot框架中正确使用枚举参数的方法与技巧,旨在帮助开发者更高效地掌握和应用枚举类型的数据传递,适合对Spring Boot感兴趣的读者深入学习。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
author-avatar
王乐668_802
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有