Как отправлять неотправленные письма
Работа на vs2010,asp.net C#. В последнее время я работаю на SMTP-сервере. С помощью SMTP-сервера мне нужно отправлять почту, я уже успешно сделал эту работу. Для отправки почты я использую приведенный ниже синтаксис.
public string PostEmail(string mailSubject, string mailBody)
{
string deliveryStatusCode = "Ok";
if (!string.IsNullOrEmpty(mailSubject) && !string.IsNullOrEmpty(gConfig.EmailTo))
{
MailMessage msg = new MailMessage();
msg.To.Add(gConfig.EmailTo);
msg.From = new MailAddress(gConfig.EmailTo);
msg.Subject = mailSubject;
msg.Body = mailBody;
msg.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient(gConfig.SmtpHost, gConfig.SmtpPort);
smtp.Credentials = new System.Net.NetworkCredential(gConfig.SmtpCredentials, gConfig.SmtpPassword);
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
smtp.Send(msg);
}
catch (SmtpException smptpEx)
{
deliveryStatusCode = smptpEx.Message;
}
}
else
{
deliveryStatusCode = "Invalid or null value entry.";
}
return deliveryStatusCode;
}
Теперь я сталкиваюсь с одной проблемой, по какой-то причине некоторые письма не могут быть отправлены, эти неотправленные письма должны быть отправлены, Как отправить эти неотправленные письма, Есть ли какой-либо механизм в SMTP для выполнения этой работы, или есть какой-то способ решить эту проблему. Спасибо заранее. Если есть какие-либо вопросы, пожалуйста, спросите.
2 ответа
Вы можете использовать каталог раскладки, если сервер smpt не работает, почта не отправляется. Когда он подключается к сети, он читает файлы в каталоге и начинает отправлять электронные письма.
Ваш код.NET просто принимает сообщение, генерирует и отправляет по электронной почте и отправляет его на SMTP-сервер. SMTP-сервер должен отправить любые неотправленные сообщения.
Вы можете делать то, что сказал @peer, и вместо отправки сообщения SMTP просто отбросьте сгенерированный файл в каталог раскладки SMTP, однако для этого требуется, чтобы ваш код.NET имел доступ к каталогу раскладки SMTP.
Другим вариантом может быть сохранение объекта электронной почты (либо в памяти, либо в виде сериализованного на диске), и если send
выдает ошибку, повторите попытку позже.
В конечном счете, однако, вам действительно необходимо выяснить, почему электронная почта в первую очередь не проходит. Это часто проблема конфигурации, которая может быть уменьшена с небольшим исследованием. Посмотрите на сетевые подключения, время работы SMTP-сервера и, самое главное, аутентификацию.
Как я сказал в своем комментарии, сгенерированное электронное письмо делает очень много прыжков, прежде чем окончательно попасть в почтовый ящик конечных пользователей. Не вдаваясь в подробности о том, что является ошибкой, мы можем только бросать дротики и надеяться, что один из них приземлится.
Удачи
гнаться