先表明Outlook的参数:网址:https://support.office.com/zh-cn/article/Outlook-com-%E7%9A%84-POP%E3%80%81IMAP-%E5%92%8C-SMTP-%E8%AE%BE%E7%BD%AE-d088b986-291d-42b8-9564-9c414e2aa040

POP 访问是被默认禁用的。 若要启用 POP 访问,请参阅在 Outlook.com 中启用 POP 访问。

IMAP 服务器名称outlook.office365.com

IMAP 端口 993

IMAP 加密方法TLS

POP 服务器名称outlook.office365.com

POP 端口 995

POP 加密方法 TLS

SMTP 服务器名称smtp.office365.com

SMTP 端口 587

SMTP 加密方法 STARTTLS


安装nuget包:因为使用的core项目,所以引用了ReturnTrue.AspNetCore.Net.SmtpClient包(SmtpClient)。

官方指定代码:

Yes, I am using SMTP client submission.

This is the c# code:

                var smtpClient = new SmtpClient()
{
Host = "smtp.office365.com",
Port = ,
UseDefaultCredentials = false,
EnableSsl = true
}; smtpClient.Credentials = new NetworkCredential("*** 发送邮箱账号 ***", "密码"); var message = new MailMessage
{
From = new MailAddress("*** 发送邮箱账号 ***"),
Sender = new MailAddress("*** 接收邮箱账号 ***"),
Subject = "Test mail",
IsBodyHtml = false
};
message.To.Add("*** 接收邮箱账号 ***"); message.Body = "This is a test mail. "; smtpClient.Send(message);

上述代码运行无误,因为一开始没有找到该代码,导致写的代码出现以下异常:

Message=The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [HK0P153CA0010.APCP153.PROD.OUTLOOK.COM]

源代码:这是我之前写的代码,实际上是一样的,但是一开始一直报上述错误(原因就是在绑定账号密码前要设置UseDefaultCredentials = false)

string smtpServer = "smtp.office365.com";
int smtpPort = ;
string mailFrom = "xxx@outlook.com";
string passWord = "xxxxxx";
string mailTo = "xxxx@qq.com";
SmtpClient smtpClient = new SmtpClient(smtpServer, smtpPort);
smtpClient.UseDefaultCredentials = false;//写到这里不报错
smtpClient.Credentials = new NetworkCredential(mailFrom, passWord);
smtpClient.EnableSsl = true;
//smtpClient.UseDefaultCredentials = false;//写到这里会报错,必须在账号密码绑定前写。
MailAddress mailAddressFrom = new MailAddress(mailFrom);
MailAddress mailAddressTo = new MailAddress(mailTo, "xx的QQ邮箱");
MailMessage mailMessage = new MailMessage(mailAddressFrom, mailAddressTo);
mailMessage.Subject = "用c#测试发送邮件";
mailMessage.Body = "这是一次测试发送,发送人用的outlook邮箱";
mailMessage.BodyEncoding = Encoding.UTF8;
smtpClient.Send(mailMessage);

代码很短,单想到实例化对象的顺序还会产生这样的结果,以后要注意了。

后续事项:域名未设置 SPF 解析记录

漏洞描述

SPF 记录是一种域名服务(DNS)记录,用于标识哪些邮件服务器可以代表您的域名发送电子邮件。 SPF 记录的目的是为了防止垃圾邮件发送者在您的域名上,使用伪造的发件人地址发送邮件。

若您未对您的域名添加 SPF 解析记录,则黑客可以仿冒以该域名为后缀的邮箱,来发送垃圾邮件。

修复方案

在您的 DNS 服务提供商处,为您的域名添加一条 TXT 记录:

  • 将主机字段(Host)设置为您子域名的名称。(例如,如果您的电子邮件地址是contact@mail.example.com,则为 mail。)如果不使用子域名,则将其设为@

  • 用您的 SPF 记录填写 TXT 值字段。例如 v=spf1 a mx include:secureserver.net ~all

  • 对应的阿里云方案链接:https://help.aliyun.com/knowledge_detail/37532.html?spm=5176.13394938.0.0.79dc2e17bQeEkN 它那个txt值包含中文符号,有点问题

C#发送Outlook邮件(仅SMTP版本)的更多相关文章

  1. 九、Python发送QQ邮件(SMTP)

    看了廖雪峰老师的教程: 一封电子邮件的旅程就是 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人 ...

  2. 使用FluentEmail发送outlook邮件

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

  3. zabbix配置发送报警邮件

    配置邮件分为两种情况: 第一种:使用远端邮件服务器发送报警邮件 Linux系统版本:CentOS6.5-64 下载mailx: http://nchc.dl.sourceforge.net/proje ...

  4. outlook 2016 for windows 每次刷新发送接收邮件会弹出登陆界面

    Q: outlook2016 for windows 每次刷新发送接收邮件会弹出登陆界面,office365 ProPlus 都是正常激活了,Word 和Excel都不存在此类问题 A: 排除用户的o ...

  5. 使用phantomjs实现highcharts等报表通过邮件发送(本文仅提供完整解决方案和实现思路,完全照搬不去整理代码无法马上得到效果)

    前不久项目组需要将测试相关的质量数据通过每日自动生成报表展示,并自动通过将报表作为邮件正文内容知会到干系人邮箱.那么问题来了,报表生成了,但是邮件怎么发送,因为highcharts等报表都是通过JS和 ...

  6. .Net Mail SMTP 发送网络邮件

    刚刚迈入"开发"的行列 一直有一个想法 我什么时候能给我庞大的用户信息数据库给每一位用户邮箱发送推荐信息呢? 刚迈入"编程两个月的时间" 我采用 SMTP 发送 ...

  7. outlook 2013撤消已经发送的邮件

    使用Outlook 2013发送邮件的时候,发送后,发现邮件写错了或者其它原因需要撤消发送邮件,这里介绍一下.   工具/原料 outlook 2013 方法/步骤   需要打开已经发送的邮件   点 ...

  8. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  9. 在Delphi中使用indy SMTP发送gmail邮件[转]

    在Delphi中使用indy SMTP发送gmail邮件[转] 2012-01-01 22:44:30|  分类: Delphi |  标签: |举报 |字号大中小 订阅     在Delphi中发送 ...

随机推荐

  1. ps 证件照制作

    自己制作证件照,再通过印鸽等服务打印邮寄,个人感觉还是比较方便实惠. 使用ps的定义图案和填充功能(ps精简版) 定义图案 1,打开1寸照片 2,图像=>图像大小,可选去掉约束比例 1寸:2.5 ...

  2. Linux设备驱动程序 之 获取当前时间

    墙上时间 内核一般通过jiffies来获取当前时间,该数值表示的是最近一次系统启动到当前的时间间隔,它和设备驱动程序无关,因为它的声明期只限于系统的运行期:但是驱动程序可以用jiffies来计算不同事 ...

  3. ubuntu 17.04 添加用户到sudo组

    最近在系统中安装了KVM和docker,用KVM的时候好好的,可以直接使用virsh等命令.但是安装了docker,使用docker命令时需要在前面加上sudo,这个用起来就挺麻烦的,于是想到dock ...

  4. ansiblle---roles

    使用ansible中的roles来管理主机. 剧本中的roles你现在已经学过 tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! ...

  5. Elasticsearch 部署以及报错解决

    前言 Elasticsearch 是一个非常值得学习和使用的分布式存储 此次部署将采用 centos6.9 一.初步了解 ES 简谈概念 Elasticsearch 是一个开源的高扩展的分布式全文检索 ...

  6. ViedoUtil获取视频的缩略图

    package com.jcf.utilsdemo; import android.graphics.Bitmap; import android.media.ThumbnailUtils; publ ...

  7. css sprite 雪碧图

    使用雪碧图的目的:有时为了美观,我们会使用一张图片来代替一些小图标,但是一个网页可能有很多很多的小图标,浏览器在显示页面的时候,就需要像服务器发送很多次访问请求, 这样一来,一是造成资源浪费,二是会导 ...

  8. 小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下

    笔记 4.Feign结合Hystrix断路器开发实战<下>     简介:讲解SpringCloud整合断路器的使用,用户服务异常情况     1.feign结合Hystrix       ...

  9. 一百零四:CMS系统之修改邮箱界面

    在base.css中加一个全局的css控制宽度 .form-container{ width: 300px;} 视图 class ResetEmailView(views.MethodView): d ...

  10. Topic与Partition