Теперь это можно сделать в 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 .
если ваш метод SmtpMail.Send(message)
не возвращает ошибку, это означает, что письмо было отправлено на SMTP-сервер, то вы находитесь вне своей юрисдикции, это насколько вы можете знать.
Метод 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.
}
Вы можете использовать DeliveryNotificationOptions для получения квитанции.
Если у вас есть объект MailMessage
с именем mail, сделайте следующее:
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
Если вы используете System.Net.Mail, попробуйте
message.DeliveryNotificationOptions = System.Net.Mail.DeliveryNotificationOptions.OnSuccess;
Согласно 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
, вы не можете знать наверняка, действительно ли он отправил письмо или нет, или было ли оно доставлено.
Нет. Электронная почта (основанная на SMPT) - ненадежный транспортный протокол, и хотя есть некоторые способы определить, что письмо было получено и прочитано, например, путем встраивания индивидуального URL изображения в письмо и отслеживания того, что изображение было запрошено клиентом получателя, нет абсолютно надежного способа выполнить ваш запрос.
Метод SmtpClient.Send вызовет исключение, если возникнет проблема с отправкой. Но кроме передачи этого сообщения на SMTP-сервер, нет никакого способа узнать, дойдет ли оно до места назначения оттуда.