我刚开始做这类事情,但我想从发送邮件的应用程序中获取输出。例如我想知道是否
- 已建立连接
- 如果用户认证成功
- 邮件是否发送成功等
我知道如何使用 System.Net.Mail 发送邮件,但有什么方法可以获取此信息吗?
编辑:
在 David Stratton 发布的链接中,您可以看到日志,它会收到如下状态代码
- 220 w2k Microsoft ESMTP MAIL 服务,版本:5.0.2195.6713 已于 2005 年 12 月 31 日星期六准备就绪
- 250-w2k 你好
- 250-AUTH GSSAPI NTLM 登录..
- 250-AUTH=LOGIN..
- 250 转..
- 250-ATRN..
- 250-尺寸 2097152..
- 250-ETRN..
- 250-流水线..
- 250-DSN..
- 250-增强状态代码..
- 250-8bitmime..
- 250-BINARYMIME..
- 250-CHUNKING..
- 250-VRFY..
- 250 好..
- 邮件来自:..
- 250 2.1.0 me@mycompany.com....发件人OK..
- 收件人:..
- 550 5.7.1 无法为 him@hiscompany.com 中继
有没有办法让这些事件直播,以便在每次事件发生时我都可以显示它们?
请您参考如下方法:
将您的 SmtpClient.Send() 调用放在 try/catch block 中并捕获以下错误。
ArgumentNullException
- 消息什么都不是。
InvalidOperationException
- 此 SmtpClient 正在进行 SendAsync 调用。
- MailMessage.From 什么都不是。
- MailMessage.To、MailMessage.CC 和 MailMessage.Bcc 属性中没有指定收件人。
- DeliveryMethod 属性设置为 Network 且 Host 为 Nothing。
- DeliveryMethod 属性设置为 Network,Host 等于空字符串 ("")。
- DeliveryMethod 属性设置为 Network,Port 为零、负数或大于 65,535。
ObjectDisposedException
- 该对象已被处置。
SmtpException
- 与 SMTP 服务器的连接失败。
- 身份验证失败。
- 操作超时。
- EnableSsl 设置为 true,但 DeliveryMethod 属性设置为 SpecifiedPickupDirectory 或 PickupDirectoryFromIis。
- EnableSsl 设置为 true,但 SMTP 邮件服务器未在对 EHLO 命令的响应中通告 STARTTLS。
SmtpFailedRecipientsException
- 邮件无法传递给 MailMessage.To、MailMessage.CC 或 MailMessage.Bcc 中的一个或多个收件人。
