如何确认邮件是否已送达?

San*_*r M 15 c# system.net.mail

下面是我的编码,只是看看它

System.Net.Mail.MailMessage oMail = new System.Net.Mail.MailMessage();
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
oMail.From = new System.Net.Mail.MailAddress("one@gmail.com");
oMail.To.Add(TextBox1.Text.Trim());
oMail.Subject = "Subject*";
oMail.Body = "Body*";
oMail.IsBodyHtml = true;
smtp.Host = "smtp.sendgrid.net";
System.Net.NetworkCredential cred = new System.Net.NetworkCredential("myusername", "mypassword");
smtp.UseDefaultCredentials = false;
smtp.Credentials = cred;
smtp.Send(oMail);
Run Code Online (Sandbox Code Playgroud)

在这里,我需要检查邮件是否已经发送.

And*_*lov 20

你不能.由于您使用SMTP,一般情况下,无法判断传递是否成功.阅读SMTP规范.邮件在发送时被路由,因此:

  1. 您无法保证在致电后立即发送您的留言smtp.Send().
  2. 由于SMTP已路由,因此您无法确定路由上的某个节点是否会因传递到上行链路而失败.


Jam*_*xon 9

您可以设置to 的DeliveryNotificationOptions属性.MailMessageOnSuccess

这里有更多信息:http://msdn.microsoft.com/en-us/library/system.net.mail.deliverynotificationoptions.aspx

在这里:http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.deliverynotificationoptions.aspx

正如评论中指出的那样,这种方法并非100%可靠.这只是一个选择.

  • 你仍然错过了比没有任何东西更好的部分. (11认同)
  • 它不是100%可靠. (4认同)
  • 比其他两个回复更可靠...... (4认同)