检查电子邮件状态或收件人状态c#

时间:2017-06-22 01:54:48

标签: c# asp.net email

我的任务是检查电子邮件是否成功发送给收件人

 using (MailMessage mm = new MailMessage("kayone831@gmail.com", "petrawaretemp@gmail.com"))
            {
                int emailStatus = 1;

                mm.Subject = "TRY";
                mm.Body = "TRY";
                Attachment attachment = new Attachment(pdfFilename,
                MediaTypeNames.Application.Octet);
                mm.Attachments.Add(attachment);
                mm.IsBodyHtml = false;
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.EnableSsl = true;
                NetworkCredential NetworkCred = new NetworkCredential("kayone831@gmail.com", "renkaiheng");
                smtp.UseDefaultCredentials = true;
                smtp.Credentials = NetworkCred;
                smtp.Port = 587;
                smtp.Send(mm);
                Response.Write("<script>alert('Success');</script>");
            }

想知道是否有办法知道我的电子邮件是否已成功发送给收件人,或者我可以在发送电子邮件之前检查收件人的电子邮件是否存在。因为每次发送电子邮件时都需要保存此电子邮件的状态,无论是成功还是失败。非常感谢任何帮助或指导。

2 个答案:

答案 0 :(得分:0)

Send()方法不会返回值,但会在发送电子邮件时等待,如果出现问题,它会抛出异常。将您的发送包含在try/catch块中。

try
{
    smtp.Send(mm);
    // record the email as successful
}
catch (SmtpException smtpEx)
{
    // authentication failed, operation timed out, etc
    // record the email as failed
}
catch (SmtpFailedRecipientsException ex)
{
    // message couldn't be delivered to one or more recipients
    // record the email as failed
}

我无法肯定地说这100%保证电子邮件已发送。您依赖于收到电子邮件的服务器,因此希望它能够返回准确的信息。

您可以在documentation

中找到更多信息

答案 1 :(得分:0)

无法检查邮件是否已发送给收件人。

假设您的SMTP服务器是xyz,并且您向收件人发送邮件,该收件人的电子邮件位于Gmail中。您需要访问gmail SMTP才能查看您发送的邮件是否已发送给收件人。

如果您在发送电子邮件时没有收到任何错误,则可以安全地假设已发送电子邮件。