我正在为我的邮件添加附件,但它正在发送空附件。 我正在寻找快速解决方案,请回答这个问题。
我正在为我的邮件添加附件,但它正在发送空附件。 我正在寻找快速解决方案,请回答这个问题。
我的API代码 - >
var UserId = User.Identity.GetUserId();
UserId = UserId.ToString();
if (!string.IsNullOrEmpty(UserId))
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var provider = await Request.Content.ReadAsMultipartAsync<MemoryMultipartFormDataStreamProvider>(new MemoryMultipartFormDataStreamProvider());
//access form data
NameValueCollection formData = provider.FormData;
//access files
IList<HttpContent> files = provider.Files;
List<string> fileNames = new List<string>();
List<string> filePaths = new List<string>();
List<Stream> inputs = new List<Stream>();
//HttpContent file1 = files[0];
foreach (HttpContent file1 in files)
{
var thisFileName = file1.Headers.ContentDisposition.FileName.Trim('\"');
fileNames.Add(thisFileName);
string filepath = String.Empty;
Stream input = await file1.ReadAsStreamAsync();
inputs.Add(input);
string directoryName = String.Empty;
string URL = String.Empty;
string tempDocUrl = WebConfigurationManager.AppSettings["DocsUrl"];
if (formData["ClientDocs"] != "ClientDocs")
{
var path = HttpRuntime.AppDomainAppPath;
directoryName = HttpContext.Current.Server.MapPath("~/Documents/");
filepath = System.IO.Path.Combine(directoryName, thisFileName);
filePaths.Add(filepath);
//Deletion exists file
if (File.Exists(filepath))
{
File.Delete(filepath);
}
}
using (var fileStream = new FileStream(filepath, FileMode.Create))
{
await file1.CopyToAsync(fileStream);
}
}
ContactModel contactModel = new ContactModel();
contactModel.FileName = fileNames;
contactModel.FilePath = filePaths;
contactModel.ToEmail = formData["To"];
contactModel.Message = formData["Message"];
contactModel.Subject = formData["Subject"];
contactModel.ContactId = Convert.ToInt64(formData["ContactId"]);
contactModel.ContentStream = inputs;
contactModel.ContactTypeId = 2;//Check Enums->ContactTypeId for more description
bool status = await _ContactService.ContactByEmail(contactModel);
HttpResponses.CreateResponsesMessage(HttpStatusCodeEnum.Ok.ToString("D"), Resource.EmailSent, responseMessage);
}
else
{
responseMessage = HttpResponses.CreateResponsesMessage(HttpStatusCodeEnum.UnAuthorized.ToString("D"), Resource.AuthorizationFail, responseMessage);
}
return xxx.CommonClass.HttpResponses.GetHttpResponseMessage(HttpStatusCode.OK, responseMessage);
}
我的邮件代码 - &gt;
bool status;
if (contentStream != null && fileName != null)
{
var i = 0;
foreach (var contentStrea in contentStream)
{
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment(contentStrea, fileName[i].Trim());
mailMessage.Attachments.Add(attachment);
i++;
}
}
mailMessage.From = new MailAddress(ConfigurationManager.AppSettings["SenderMailAddress"]);
mailMessage.IsBodyHtml = true;
status = await SMTPCredentials(mailMessage);
return status;
}
答案 0 :(得分:1)
我不确定,但在添加附件之前尝试寻找流的开头。
contentStrea.Seek(0, System.IO.SeekOrigin.Begin);
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment(contentStrea, fileName[i].Trim());