안녕하세요. 전자 메일에 첨부 파일을 추가하려하지만이 이상한 예외가 발생합니다. 내가 파일 입력 양식에서 첨부 파일을 얻고있다System.Mail.Net은 닫힌 파일에 액세스 할 수 없습니다. 첨부 파일을 추가하려고 시도 할 때 예외가 발생했습니다.
<div class="form-group">
<br/>
Select any files to attach to email
<div class="input-group">
<label class="input-group-btn btn btn-default btn-file" id="attachFiles">
Upload <input type="button" id="attach" name="Upload" style="display: none" value="Upload"/>
</label>
<label class="input-group-btn btn btn-default btn-file">
Browse <input type="file" id="attachInput" multiple="false" style="display: none"/>
</label>
<input type="text" disabled="disabled" id="attachText" class="form-control input-group-addon"/>
</div>
<br/>
<ul id="issueFormAttachName" class="list-group list-inline"></ul>
그리고 내가 요청을 통해이 파일을 받고 다른 컨트롤러
[HttpPost]
[Route("home/saveAttachment")]
public ActionResult SaveAttachment()
{
try
{
EmailAttachments = new EmailAttachments
{
FileCollectionBase = Request.Files
};
return Json("Ok");
}
catch (Exception ex)
{
return Json("Error occurred. Error details: " + ex.Message);
}
}
을 통해 나중에 액세스하기 위해 공용 변수에 저장하고 이 후 내 컨트롤러에 전화를 걸어이 파일을 사용하여 이메일을 보내십시오.
string usersToReceived = "";
EmailMessage email = new EmailMessage
{
InnerHtmlBody = emailDto.EmailBody,
Subject = $"Support enquiry ticket number #{issueId}",
EmailHeader = "Thank you for contacting support"
};
emailDto.Users.ForEach(u => usersToReceived += u + ";");
Dictionary<string, Stream> streams = new Dictionary<string, Stream>();
//Check if attachments exist
if (HomeController.EmailAttachments?.FileCollectionBase.Count > 0)
{
foreach (string streamName in HomeController.EmailAttachments.FileCollectionBase)
{
streams.Add(streamName, HomeController.EmailAttachments.FileCollectionBase[streamName].InputStream);
}
foreach (string file in HomeController.EmailAttachments.FileCollectionBase)
{
//make sure stream is not disposed untill send is done
//Streams dont need to be explicitly disposed
email.AddAttachment(streams[file], file, HomeController.EmailAttachments.FileCollectionBase[file]?.ContentType);
}
}
email.Send(usersToReceived);
}
첨부 파일 추가 방법은 ca LLS 기본 첨부 파일 생성자 (New Attachment(_ms, fileName, mediaType)
이제
때로는 여기에 무슨 무슨 난 내 캐시를 지우고이 작동하지만 대부분의 시간이 오류와 예외가 폐쇄 파일 누구나 알고에 액세스 할 수 없습니다 발생합니다 위의 코드를 사용하려고하면? 난 끝에 캐시 지우기 방법을 가지고 노력 않았지만이
귀하의 첨부 파일은 MVC 파이프 라인으로 사망합니다. Request.Files 콘텐츠를 다른 ICollection 변수로 다시 쓰고 저장하면 매력처럼 작동합니다. –
고마워 할 것입니다 – Harry
안녕하세요 다른 질문 언제 내가 Request.Files의 시점에서 그들을 다시 작성해야합니까 아니면 나중에 전화를하기 전에? 왜냐하면 내 앱이 MVC 파이프 라인을 벗어나는 곳을 알지 못하기 때문이다. – Harry