什麼CrashRpt確實爲發送電子郵件:
電子郵件系統只需使用MAPI發送電子郵件。如果您有一個,它會嘗試使用您的默認郵件客戶端,並且它支持MAPI。有關詳細信息,請參閱MailMsg.cpp。
個人經驗:
在我公司的CrashRpt的使用,我們修改了一點,雖然叫我們創建它提交崩潰報告的Web服務。所以我們完全從CrashRpt中解放了電子郵件代碼。相反,我們在我們的錯誤跟蹤系統中有一個在發生崩潰時自動提交崩潰的部分。
要找到你的問題:
我也許會嘗試調試CrashRpt代碼,看看它爲什麼給你一個保存對話框。它應該只是打開您的默認郵件客戶端。也許你有一箇舊版本的庫,或者對話框資源有點混亂。調試代碼會告訴你這個。
最可能的MailReport被調用,但失敗。
原CrashRpt code的CrashHandler.cpp在剛剛的DoModal後設置斷點:
mainDlg.m_pUDFiles = &m_files;
if (IDOK == mainDlg.DoModal())
{
//Put breakpoint here <---------
if (m_sTo.IsEmpty() ||
!MailReport(rpt, sTempFileName, mainDlg.m_sEmail, mainDlg.m_sDescription))
{
SaveReport(rpt, sTempFileName);
}
}
檢查,看看爲什麼MailReport是沒有得到調用。它可能是對話框資源,也可能是您的m_sTo未填充,或者您可以通過MailMsg.cpp來查看MAPI失敗的位置。
替代的解決方案:
一個簡單的辦法,如果你發現MailReport上述被調用,但沒有成功,是不是隻是做一個的ShellExecute並指定一個mailto:
你甚至可以嘗試使用MAPI的方法,但如果失敗做一個mailto: