Как проверить, было ли письмо успешно отправлено

Теперь это можно сделать в Chrome, Safari, FF4 + и IE10pp4 +!

См. ответ этого вопроса для получения дополнительной информации: Обновление адресной строки с новым URL без хеша или перезагрузка страницы

Пример:

 function processAjaxData(response, urlPath){
     document.getElementById("content").innerHTML = response.html;
     document.title = response.pageTitle;
     window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath);
 }

Затем вы можете использовать window.onpopstate для поиска навигации по кнопке назад / вперед:

window.onpopstate = function(e){
    if(e.state){
        document.getElementById("content").innerHTML = e.state.html;
        document.title = e.state.pageTitle;
    }
};

Более подробный обзор манипулирования историей браузера см. В этой статье MDN .

23
задан Cœur 8 February 2018 в 02:04
поделиться

7 ответов

если ваш метод SmtpMail.Send(message) не возвращает ошибку, это означает, что письмо было отправлено на SMTP-сервер, то вы находитесь вне своей юрисдикции, это насколько вы можете знать.

23
ответ дан 29 November 2019 в 01:12
поделиться

Метод Smtp Client.Send вызовет исключение при возникновении проблемы с отправкой. Но помимо передачи этого сообщения на SMTP-сервер, невозможно узнать, доходит ли он оттуда до места назначения.

-121--1556557-

Гитхуб! Действительно, я научился только ценить гит, используя гитуб.

-121--2075785-

Поместите метод .Send (msg) в блок try catch, а затем catch Smtp FailedRecipityException.

try
{
    mail.Send(msg);
}
catch (SmtpFailedRecipientException ex)
{
    // ex.FailedRecipient and ex.GetBaseException() should give you enough info.
}
8
ответ дан 29 November 2019 в 01:12
поделиться

Вы можете использовать DeliveryNotificationOptions для получения квитанции.

Если у вас есть объект MailMessage с именем mail, сделайте следующее:

mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
5
ответ дан 29 November 2019 в 01:12
поделиться

Если вы используете System.Net.Mail, попробуйте

message.DeliveryNotificationOptions = System.Net.Mail.DeliveryNotificationOptions.OnSuccess;
10
ответ дан 29 November 2019 в 01:12
поделиться

Согласно spec:

S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: Alice Example <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 Jan 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}

Как только сервер говорит 250 Ok: queued as 12345, вы не можете знать наверняка, действительно ли он отправил письмо или нет, или было ли оно доставлено.

6
ответ дан 29 November 2019 в 01:12
поделиться

Нет. Электронная почта (основанная на SMPT) - ненадежный транспортный протокол, и хотя есть некоторые способы определить, что письмо было получено и прочитано, например, путем встраивания индивидуального URL изображения в письмо и отслеживания того, что изображение было запрошено клиентом получателя, нет абсолютно надежного способа выполнить ваш запрос.

4
ответ дан 29 November 2019 в 01:12
поделиться

Метод SmtpClient.Send вызовет исключение, если возникнет проблема с отправкой. Но кроме передачи этого сообщения на SMTP-сервер, нет никакого способа узнать, дойдет ли оно до места назначения оттуда.

4
ответ дан 29 November 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: