准备

我们想通过Java代码实现发送OutLook邮件,必须准备以下材料:

  • OutLook邮箱
  • 目标邮箱

查看OutLook邮箱信息

打开OutLook邮箱,在Settings中搜索或找到SMTP:

打开以下界面,拿到我们想要的数据(ServerName 以及 Port),如图:

JAVA项目

使用Maven或者创建一个普通项目,选择导入Maven依赖或导入jar包,我这里使用的是Maven创建的Java项目,所以我导入了以下依赖:

<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>

编写发送代码

复制或编写以下代码,理解以下代码并不困难,我几乎标注了每一行代码:

public static boolean SendEmail(String sender,String password,String host,String port,String receiver)
{ try{ Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "true"); //false
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", host);
// 发送邮件协议名称 这里使用的是smtp协议
props.setProperty("mail.transport.protocol", "smtp");
// 服务端口号
props.setProperty("mail.smtp.port", port);
props.put("mail.smtp.starttls.enable", "true"); // 设置环境信息
Session session = Session.getInstance(props); // 创建邮件对象
MimeMessage msg = new MimeMessage(session); // 设置发件人
msg.setFrom(new InternetAddress(sender)); // 设置收件人
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(receiver)); // 设置邮件主题
msg.setSubject("this is subject"); // 设置邮件内容
Multipart multipart = new MimeMultipart(); MimeBodyPart textPart = new MimeBodyPart();
//发送邮件的文本内容
textPart.setText("this is the text");
multipart.addBodyPart(textPart); // 添加附件
MimeBodyPart attachPart = new MimeBodyPart();
//可以选择发送文件...
//DataSource source = new FileDataSource("C:\\Users\\36268\\Desktop\\WorkSpace\\MyApp\\Program.cs");
//attachPart.setDataHandler(new DataHandler(source));
//设置文件名
//attachPart.setFileName("Program.cs");
multipart.addBodyPart(attachPart); msg.setContent(multipart); Transport transport = session.getTransport();
// 连接邮件服务器
transport.connect(sender, password);
// 发送邮件
transport.sendMessage(msg, new Address[]{new InternetAddress(receiver)});
// 关闭连接
transport.close(); return true;
}catch( Exception e ){
e.printStackTrace();
return false;
}
}

运行方法

我这里直接使用main方法直接运行了(为了调试方便和更好的理解),如果是具体业务,你应该对这些代码包括参数进行封装:

public static void main(String[] args) {

        String sender = "erosionzhu@outlook.com";
String password = ""; //填写你的outlook帐户的密码 // 收件人邮箱地址
String receiver = "362687440@qq.com"; // office365 邮箱服务器地址及端口号
//这个就是之前的Server Name,注意:你使用的Outlook应用可能使用了不同的服务器,根据自己刚才拿到的地址为准
String host = "smtp.office365.com";
String port = "587"; //这个就是拿到的port
boolean b = SendEmail(sender, password, host, port, receiver);
if(b)
{
System.out.println("发送成功");
}else
{
System.out.println("发送失败");
}
}

通过Java代码发送OutLook邮件的更多相关文章

  1. 使用Java代码发送SMTP邮件

    package cn.Douzi.send; import javax.mail.Session; import javax.mail.Transport; import javax.mail.int ...

  2. 如何设置Fiddler来拦截Java代码发送的HTTP请求,进行各种问题排查

    我们使用Java的RestTemplate或者Apache的HTTPClient编程的时候,经常遇到需要跟踪Java 代码发送的HTTP请求明细的情况.和javascript代码在浏览器里发送请求可以 ...

  3. MimeMessageHelper代码发邮件时,通过客服端登陆到邮箱,在已发送邮件里没有已经通过代码发送的邮件

    MimeMessageHelper代码发邮件时,通过客服端登陆到邮箱,在已发送邮件里没有已经通过代码发送的邮件, 这个问题很奇怪,这样的话不能看到通过代码发送的邮件历史记录,所以只好借助秘密抄送了,抄 ...

  4. C#发送Outlook邮件(仅SMTP版本)

    先表明Outlook的参数:网址:https://support.office.com/zh-cn/article/Outlook-com-%E7%9A%84-POP%E3%80%81IMAP-%E5 ...

  5. Java Mail发送简单邮件,完整代码

    依赖javax.mail.jar,地址:https://java.net/projects/javamail/pages/Home 完整示例代码如下: package com.jadic.utils; ...

  6. java代码发送邮箱验证码与qq邮箱smtp服务

    发送邮箱的类封装,在此之前需要一个jar包  javax.mail.jar 下载链接https://github.com/javaee/javamail/releases/download/JAVAM ...

  7. 使用FluentEmail发送outlook邮件

    一,邮箱账号相关设置 1,创建outLook邮箱. 2,进入邮箱设置->同步电子邮件->允许设备和应用使用pop 3,设置microsoft账号的应用程序密码->进入安全性页面-&g ...

  8. java代码发送JSON格式的httpPOST请求

    package com.test; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOE ...

  9. 用java代码发送http请求

    //发送post请求 PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL ...

  10. (转)java代码发送JSON格式的httpPOST请求

    import Java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import j ...

随机推荐

  1. Go语言目前主要有哪些应用框架

    Go语言是一种高效.快速.简洁的编程语言,近年来越来越受到开发者的欢迎.由于Go语言的快速发展,出现了很多的优秀框架来支持Go应用程序的开发.以下是一些目前比较流行的Go语言框架: 1. Gin:Gi ...

  2. pikachu靶场 越权(水平越权+垂直越权)

    水平越权 A用户和B用户属于同一级别用户,但各自不能操作对方个人信息.A用户如果越权操作B用户个人信息的情况称为水行越权操作 三个用户 lucy/lili/kobe  密码都为123456 随便登录其 ...

  3. office系列软件(word、ppt、excel)打不开的解决方案

    前言 ​ 这里我遇到的情况是点击都没反应,而不像很多人那样有报错弹窗,费劲千辛万苦才最终解决,中间一度自暴自弃想着干脆用WPS得了(大可不必),中间我尝试了三种方法,不一定哪种有效,权当分享: 一.使 ...

  4. 【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常

    问题现象 客户的java日志中有如下异常信息: 问题的风险及影响 对正常的业务流程无影响,但是影响druid的merge sql功能(此功能会将sql语句中的字面量替换为绑定变量,然后将替换以后的sq ...

  5. LeetCode 二叉树的最近公共祖先

    一.二叉搜索树的最近公共祖先 利用二叉搜索树的性质,祖先的两个孩子,左孩子的小于根节点的值,右孩子大于根节点的值. 如果根节点的值,同时大于p的值和q的值,那么在左子树找根节点: 如果根节点的值,同时 ...

  6. 【LLM训练系列】从零开始训练大模型之Phi2-mini-Chinese项目解读

    一.前言 本文主要是在复现和实践Phi2-mini-Chinese后,简要分析下Phi2-mini-Chinese这个项目,做一个学习实战总结. 原文发布于知乎:https://zhuanlan.zh ...

  7. Hash表实践 —— 两数之和

    目录 题目背景 解题思路 题目背景 这个题目用常规的双循环就可以完成. 但不是最优解.为什么? 看看他的步骤数: N =[3,2,4] 求结果为6的两个元素坐标如下, 1). 3+2 = 5 不等于 ...

  8. nRF24L01芯片驱动记录

    nRF24L01芯片驱动记录 ​ 学习完了usb,了解了部分元器件的功能以及用途后,打算在端午假期用一天的时间完成一个小目标,不过实际上是花了一天半才成功实现,现将驱动nRF24L01芯片的整个过程记 ...

  9. QT原理与源码分析之如何开发一个自定义的绘图设备和QT绘图引擎?

    简介 本文将介绍如何自定义QT绘图设备类和如何自定义QT绘图引擎类. 目录 QT绘图设备抽象类QPaintDevice QT绘图引擎抽象类QPaintEngine 自定义绘图设备类 自定义绘图引擎类 ...

  10. BOOST库 将源码作交叉编译 书籍下载

    好记性不如烂笔头,BOOST库的移植,我也记录一下. 1. BOOST库 版本1.66.0 下载地址, 附书籍C++ BOOST库开发指南: https://download.csdn.net/dow ...