我的任务是检查电子邮件是否成功发送给收件人
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>");
}
想知道是否有办法知道我的电子邮件是否已成功发送给收件人,或者我可以在发送电子邮件之前检查收件人的电子邮件是否存在。因为每次发送电子邮件时都需要保存此电子邮件的状态,无论是成功还是失败。非常感谢任何帮助或指导。
答案 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才能查看您发送的邮件是否已发送给收件人。
如果您在发送电子邮件时没有收到任何错误,则可以安全地假设已发送电子邮件。