添付ファイル付きのメールを送信してからブラウザで表示するためだけに作成されたファイルを削除すると問題が発生します。これは電子メールを送信するためだけに作成されているため、このファイルを削除する必要があります。これどうやってするの。
これが私がこれまでに得たものです。
public void SendEmail()
{
EmailClient.Send(mailMessage);
//View PDF Certificate in Browser
ViewPDFinBrowser((string)fileObject);
DeleteGeneratedTempCertificateFile((string)fileObject));
}
public void ViewPDFinBrowser(string filePath)
{
PdfReader reader = new PdfReader(filePath);
MemoryStream ms = new MemoryStream();
PdfStamper stamper = new PdfStamper(reader, ms);
stamper.ViewerPreferences = PdfWriter.PageLayoutSinglePage | PdfWriter.PageModeUseThumbs;
stamper.Close();
Response.Clear();
Response.ContentType = "application/pdf";
Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
Response.OutputStream.Close();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
public static void DeleteGeneratedTempCertificateFile(Object fileObject)
{
string filePath = (string)fileObject;
if (File.Exists(filePath))
{
File.Delete(filePath);
}
}
SendEmail() を呼び出すときに必要な手順は次のとおりです。
1) 添付ファイル付きのメールを送信 --> 一時ファイルが作成されました 2) 一時ファイルをブラウザーで表示 3) 一時ファイルを削除
ファイルが応答オブジェクトにある限り、エラーメッセージ (「ファイルは別のプロセスで使用されています。ファイルは別のプロセスで使用されています。応答ストリームを閉じるとファイルは削除されますが、その後はできません。ブラウザで表示します。
ボタンをクリックして新しいウィンドウでブラウザで表示するファイルを開くことができれば、ファイルを削除できると考えていました。または、10 分後にファイルを削除できると考えています。ユーザーが 1 ~ 2 分以上 PDF を表示しているサイトにいることはないためです。
サンプルコードで解決策の1つを教えてください。
あなたの時間と助けに感謝します。