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

先表明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 = 587,
                    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 = 587;
            string mailFrom = "[email protected]";
            string passWord = "xxxxxx";
            string mailTo = "[email protected]";
            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)设置为您子域名的名称。(例如,如果您的电子邮件地址是[email protected],则为 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值包含中文符号,有点问题

原文地址:https://www.cnblogs.com/masonlu/p/11739786.html

时间: 2024-12-01 17:48:03

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

Python发送带附件的SMTP邮件

利用python的email模块可以很方便的发送邮件,你甚至可以在邮件中附上附件!前提是你的邮箱开启了SMTP服务(一般都开启了,如果没有开启,可以到你的邮箱中进行设置),你可以把收件人和发件人都写成一个邮箱来进行测试,这样就是自己给自己发邮件. #coding: utf-8 import smtplib from email.mime.multipart import MIMEMultipart#python2.4及之前版本该模块不是这样调用的,而是email.MIMEMultipart.MI

java通过SMTP发送QQ邮件(参考自龙果学院)

java通过SMTP发送QQ邮件编辑 个人邮箱开通SMTP服务(进入个人邮箱,点击设置–>账户):  点击了账户后,往下拉可以看到SMTP服务选项,默认情况下这个选项是不开启的.点击开启腾讯会进行身份验证,身份验证通过以后,会收到一个用于使用SMTP的16位口令,验证身份的过程中把收到的口令保存下来,因为后面要使用SMTP功能必须要用到这个口令.  具体实现代码:     public static void main(String args[]) {        // 邮件内容       

python3.x下 smtp发送html邮件和附件

综合网络上的文章以及自己的实验,在python的IDEL下成功的通过SMTP发送出去了邮件.现将过程记录如下: 一.准备工作: 1.安装好python3.x 2.拥有一个支持smtp服务的邮箱,我是用的126的邮箱 网易和腾讯的邮箱的密码现在都变为授权码登录.需要搜集这些信息:SMTP服务器地址,你的邮箱账号,授权码. 二.思路 发送HTML和带附件的邮件,我们要用到先把html文件组合到一起,做为一个整体.可以理解为作为一个邮包.然后通过SMTP协议传输出去.这个SMTP是传输协议.那么我们用

扫描仪通过SMTP中继服务器发送通知邮件失败

现象描述: 前2天有客户给我打电话说有1个办公地点的扫描仪扫描的文件多的话,收件人是无法收到通知邮件的,扫描仪上未显示任何错误:如果扫描的数量比较少如几张的话收件人就可以正常收到扫描通知邮件(客户的环境是在本地搭建了SMTP中继服务器,所有的业务应用,如:扫描仪.打印机.OA.SQL通知等都是通过SMTP中继服务器连接到Office 365进行通知邮件发送的) 分析过程: 1. 通过现象初步判断应该是扫描的文件太大超过了限定的设置所致,通过检查SMTP中继服务器的发送大小限制,SMTP中继服务器

Outlook中撤回已发送的邮件

在Outlook中,如果发现已经发送的邮件有误,或者发送给了错误的收件人.可以将这封邮件撤回. 注:如果对方没有读这封邮件,就可以成功将其撤回.如果已经被对方阅读过,就无法撤回了. 详细步骤如下, 1.打开已发送的邮件,选择"操作","撤回该邮件", 2.根据自己的需求选择相应的选项,如下图, 3.撤回成功,如下图, 谢谢!

.Net Mail SMTP 发送网络邮件

刚刚迈入"开发"的行列 一直有一个想法 我什么时候能给我庞大的用户信息数据库给每一位用户邮箱发送推荐信息呢? 刚迈入"编程两个月的时间" 我采用 SMTP 发送网络邮件 ,先上常用的邮件服务器 在上代码 /**********************************这里是邮件服务器名 POP3 协议使用POP地址 SMTP 使用SMTP*****************************************/ gmail(google.com) P

outlook 2013撤消已经发送的邮件

使用Outlook 2013发送邮件的时候,发送后,发现邮件写错了或者其它原因需要撤消发送邮件,这里介绍一下. 工具/原料 outlook 2013 方法/步骤 需要打开已经发送的邮件   点击左上角的[文件],会切换到信息界面.   点击[邮件重发和撤消]的小三角,点击[撤回访邮件].   接着自动回到原邮件,弹出对话框,有两个选项,选择其中一个,点击[确定].   邮件撤消只会撤消对方没有读取的邮件,如果已经读取的则撤消不了. END 注意事项 一定要先打开邮件才点[文件]否则看不到撤消选项

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

在Delphi中使用indy SMTP发送gmail邮件[转] 2012-01-01 22:44:30|  分类: Delphi |  标签: |举报 |字号大中小 订阅 在Delphi中发送email很简单,发送ssl方式的gmail邮件也很简单,只要在使用的idSMTP上附加一个TIdSSLIOHandlerSocket 就可以了. 使用控件 procedure sendMail(sToMail, sSubject, sContent: String); var SMTP: TIdSMTP;

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

前不久项目组需要将测试相关的质量数据通过每日自动生成报表展示,并自动通过将报表作为邮件正文内容知会到干系人邮箱.那么问题来了,报表生成了,但是邮件怎么发送,因为highcharts等报表都是通过JS和HTML在前端浏览器进行渲染生成的,而最要命的是邮箱为了安全起见一般都不支持JS,所以就算后台计算出了报表所需的数据,但是也无法在邮件内容中生成报表. 后来想到phantomjs这个神器,它是一个基于webkit的内核浏览器,可以不弹出浏览器界面在内存中模拟打开网页,进而加载需要的东东(当然包括hi