C#发送电子邮件(SMTP)及outlook.com账号之概要
这是关于c#发送电子邮件(SMTP)的技术笔记,以”简报“形式呈现。
因为最后成功通过outlook.com发送了邮件,所以,我觉得还是有必要 记录一下其中的要点。
一、技术核心
.net Framework 提供的两个类:SmtpClient和MailAddress
前者负责连接到服务器并且发送邮件,后者构成邮件的内容。
详细请参考:
https://www.cnblogs.com/xinyf/p/6294785.html
二、多个接收人
观察网易邮箱,多个接收人使用的是分号(【,】)分割,但是直接传递参数到【MailAddress.To】的【Add()】方法却会出现解析异常。
解决方案两个:
微软方面在这个方法的注释上说,多个接收人用逗号分割。
自己拆分成数组,然后循环【Add()】
我自己尝试第一个方案的时候,赶上了126邮箱认为我发广告屏蔽了我账号stmp。所以,我后来成功的时候是使用的第二个方案。

三、使用outlook.com提供的SMTP
3.1 设置
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

3.2 端口号不是默认的25,而是587
没有添加端口的时候,返回的异常提示是:
SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为:5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [AM0PR02CA0048.eurprd02.prod.outlook.com].
添加了端口之后,仍然没有通过,异常也变了。
SMTP 服务器要求安全连接或客户端未通过身份验证。 服务器响应为:5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [AM0PR01CA0034.eurprd01.prod.exchangelabs.com]
于是进入下一个环节:
3.3 关于STARTTLS
看到微软outlook强调:
SMTP 加密方法 STARTTLS
所以,就怀疑是跟STARTTLS有关。
根据下面这篇文章好像找到了 添加 这个选项的办法:
http://www.voidcn.com/article/p-mgynnypj-btn.html
也就是说这一行:

添加了之后问题仍然存在,并且异常和服务器返回的信息都和以前一样。
后来发现,还需要开启SSL
.EnableSsl = true;
上面的链接里面已经是这么用的,但是当时我没看到,在搜到了这个问题的时候才注意到。
https://q.cnblogs.com/q/83815/
另外,测试的时候,UseDefaultCredentials选项开启和关闭都能发送成功。
完。
C#发送电子邮件(SMTP)及outlook.com账号之概要的更多相关文章
- 转: "SMTP 服务器无法识别在 Mac 2011 Outlook 中发送电子邮件时错误。错误 17092"
在 Mac 2011 Outlook 中发送电子邮件时,您可能会收到下面的错误消息: 无法发送邮件.SMTP 服务器无法识别任何 Outlook 所支持的身份验证方法.请尝试更改帐户设置中的 SMTP ...
- C# 网络编程之基于SMTP发送电子邮件
本文主要讲述基于C#网络编程的发送邮件的编程,邮件发送功能是基于邮件协议的,常见的电子邮件协议有SMTP(简单邮件传输协议).POP3(邮局协议).IMAP(Internet邮件访问协议),文章主要 ...
- 在Python中使用SMTP发送电子邮件
Python中有内置的smtplib模块,完成一封邮件的发送,需要做很多准备工作.第三方的py_smtp这个包也是基于smtplib的,在Python中使用py_smtp发送电子邮件非常方便,只要填写 ...
- Spring通过Gmail SMTP服务器MailSender发送电子邮件
Spring提供了一个有用的“org.springframework.mail.javamail.JavaMailSenderImpl”类,通过JavaMail API 简化邮件发送过程.这里有一个项 ...
- linux通过使用mail发送电子邮件
通过外部方法发送的电子邮件 bin/mail默认为本地sendmail发送电子邮件,求本地的机器必须安装和启动Sendmail服务.配置很麻烦,并且会带来不必要的 资源占用.而通过改动配置文件能够使用 ...
- web端自动化——Python的smtplib发送电子邮件
SMTP (Simple Mail Transfer Protocol)是简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. Python的smtplib模块提 ...
- JAVA实现发送电子邮件
相信大家对于网站也好,手机app也好,用户注册时,需要进行邮箱验证的功能特别好奇吧,本篇我将带领大家一起实现一下这个简单而又神奇的小功能,让我们的应用也可以加入这些神奇的元素.废话不多说,下面开始我们 ...
- 使用php发送电子邮件(phpmailer)
在项目开发过程中,经常会用到通过程序发送电子邮件,例如:注册用户通过邮件激活,通过邮件找回密码,发送报表等.这里介绍几种通过PHP发送电子邮件的 方式(1)通过mail()函数发送邮件(2)使用fso ...
- Django 发送电子邮件
官方片段: 虽然Python使得通过smtplib 模块发送电子邮件相对容易,但Django提供了一些轻量级包装.提供这些包装器是为了使发送电子邮件更加快速,以便在开发过程中轻松测试电子邮件发送,并为 ...
随机推荐
- 如何更规范化使用MySQL
如何更规范化使用MySQL 背景:一个平台或系统随着时间的推移和用户量的增多,数据库操作往往会变慢:而在Java应用开发中数据库更是尤为重要,绝大多数情况下数据库的性能决定了程序的性能,如若前期埋下的 ...
- [DE] Pipeline for Data Engineering
How to build an ML pipeline for Data Science 垃圾信息分类 Ref:Develop a NLP Model in Python & Deploy I ...
- 三段式有限状态机Verilog代码
状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作.完成特定操作的控制中心.有限状态机简写为FSM(Finite State Machine),主 ...
- spring定时任务-文件上传进度条
spring定时任务 导依赖 <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --> <dep ...
- 如何优雅的使用springboot项目内置tomcat
问题:以前,我们在使用SSM框架的时候,都是通过外置的tomcat进行部署,如果想访问文件,直接拖到项目的根目录下面即可.假如我们需要放一个apk文件,然后让别人下载,只需将apk放到项目根目录下面, ...
- 第一篇:php开发环境
Window: 1.XAMPPhttps://www.apachefriends.org/index.html 2.WampServerhttp://www.wampserver.com/ Linux ...
- Future类型的连锁的运用
Future类型的连锁的运用: 洗脸 刷牙 吃早饭 看电视 出门 串行: import scala.concurrent.{Await, Future} import scala.util.{Fail ...
- asp.net core过滤器记录响应对象
百度到的基本上就是读取response.body的流.然后记录完了之后,把流的index重新复位,这样也太麻烦了. 其实asp.net core团队肯定已经考虑到了这种需求,比如记录请求响应日志.给响 ...
- SpringCloud系列-利用Feign实现声明式服务调用
上一篇文章<手把手带你利用Ribbon实现客户端的负载均衡>介绍了消费者通过Ribbon调用服务实现负载均衡的过程,里面所需要的参数需要在请求的URL中进行拼接,但是参数太多会导致拼接字符 ...
- 关于IDEA的Maven打jar包springboot项目问题,打成可执行jar包,IDEA创建的maven项目和spring initializr项目
Spring Initializr创建的项目 源文件地址 https://github.com/TaoPanfeng/maven-package 项目的创建步骤 进行打包 clear package ...