2 回答

TA貢獻1773條經(jīng)驗 獲得超3個贊
如果您存檔的電子郵件地址無效,則 SendAndSaveCopy() 應(yīng)該拋出一個異常說明。你可以實現(xiàn)一個 try/catch 語句來檢測任何失敗,并將失敗發(fā)送到一個記錄器,它會給你一個文本列表來處理:
public void Send(EmailRequest emailRequest)
{
try
{
// Creates the message itselft
EmailMessage message = new EmailMessage(ServiceExchange);
message.Body = new MessageBody(emailRequest.Message);
message.Subject = emailRequest.Subject;
message.ToRecipients.Add(emailRequest.To);
// Create a custom extended property and add it to the message.
Guid myPropertySetId = Guid.NewGuid();
ExtendedPropertyDefinition myExtendedPropertyDefinition = new ExtendedPropertyDefinition(myPropertySetId, "MyExtendedPropertyName", MapiPropertyType.String);
message.SetExtendedProperty(myExtendedPropertyDefinition, "MyExtendedPropertyValue");
// Asynchronously, call
message.SendAndSaveCopy();
// Wait one second (while EWS sends and saves the message).
System.Threading.Thread.Sleep(1000);
}
catch (Exception x)
{
logger.LogError(x.Message);
}
}
您可以在此處找到其他示例。

TA貢獻1817條經(jīng)驗 獲得超6個贊
我試圖檢測我的應(yīng)用程序發(fā)送的電子郵件是否發(fā)送失敗。這意味著我不是要驗證電子郵件,而實際上只是驗證它是否到達了目標(biāo)郵箱。
一旦您將消息交給 Exchange,它甚至可能不會立即發(fā)出。一旦 Exchange 嘗試發(fā)送它,它可能會發(fā)現(xiàn)遠程服務(wù)器不可用并稍后重試。
最終,Exchange 要么讓遠程服務(wù)器接受消息,要么放棄。
如果遠程服務(wù)器接受該消息,并且您在消息中配置了該標(biāo)志,則您可以獲得發(fā)送回執(zhí)。然而這并不能意味著該郵件確實送達收件人或收件人閱讀; 這僅意味著 Exchange 能夠?qū)⑵涮峁┙o目標(biāo)服務(wù)器。
許多服務(wù)器只是簡單地接受和丟棄發(fā)送給不存在的用戶的郵件。其他人將它們?nèi)拥饺帧袄]件”文件夾中。
如果您在郵件中設(shè)置了正確的“回復(fù)”地址,并且在 Exchange 管理員設(shè)置的超時時間內(nèi)無法將郵件傳送到遠程服務(wù)器,您將收到來自 Exchange 的電子郵件。這通常是幾天。
但是,即使您設(shè)置了“已讀回執(zhí)”標(biāo)志,收件人也完全有可能閱讀郵件而不發(fā)送郵件。遵守是自愿的。
真正非常簡短的回答是“您可以檢測到即時故障,但實際上無法確定消息是否已被讀取或傳送”,并且無論如何都不會在您的代碼中發(fā)生。
如果有幫助,有一些錯誤可以立即檢測到,這些錯誤會顯示在您的 try/catch 塊中,但這些是例外而不是規(guī)則。
- 2 回答
- 0 關(guān)注
- 203 瀏覽
添加回答
舉報