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-9c414e2aa040html

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

IMAP 服务器名称outlook.office365.com服务器

IMAP 端口 993测试

IMAP 加密方法TLSui

POP 服务器名称outlook.office365.com阿里云

POP 端口 995加密

POP 加密方法 TLSspa

SMTP 服务器名称smtp.office365.com.net

SMTP 端口 587code

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 = "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值包含中文符号,有点问题
相关文章
相关标签/搜索