使用System.Web.Mail 写了一个发送邮件程序,一直都工作正常。
最近更换新邮件服务器后,发送邮件时出现0x80040217错误。
从网上搜了一下,有用的结果不多,有说是Web.Mail过时,要改用system.net.mail等等。
后来跟踪代码,发现是进行到验证的步骤时出的问题,于是尝试去掉“@域名”,真的可以了。
那为什么不提示用户名错误呢,通过使用控制台telnet测试发现,
新邮件服务的连接,在任何指令出错后都会立即断开,从而引发代码0x80040217错误。
登录之前的邮件服务,用户名必须带域名,而新的又不能带,这个必定是和邮件服务的配置有关。
本着尽量不改动代码的前提,查看了新邮件服务的管理工具,发现创建邮件账号有两种类型:
1普通账号,2域账号
出错时使用的账号类型为普通账号,于是删除并重新创建域账号,再使用带域名的账号登录OK了。
问题解决了,可是又想到代码该如何适应不同的账号要求呢?
先采用一种默认账号格式登录,失败后再尝试另一种格式。