В ASP. NET Ядро У меня есть метод, который должен отправлять электронную почту с CSV-файлом в определенное время каждый день, я использую метод Linq для получения нужных мне данных, а затем использую StringBuilder
, чтобы создать CSV-файл с данными. Вот метод,
public IActionResult EmailFile(int num)
{
var user = "myEmail";
StringBuilder sb = new StringBuilder();
//linq method fetches data
var fills = _context.Prescriptions
.Include(p => p.Patient)
.Where(f => f.FolderStatusId == 9)
.Where(d => d.DeliveryDate == DateTime.Today.AddDays(1))
.ToList();
sb.AppendLine("Id" + ", " + "DeliveryDate" + ", " + "LastName" + ", " + "Medication");
foreach (var line in fills)
{
sb.AppendLine(line.Id + ", " + line.DeliveryDate + ", " line.LastName + ", " + line.Medication + ", ");
}
sb.ToString();
var file = File(System.Text.Encoding.ASCII.GetBytes(sb.ToString()), "text/csv", "Fills.csv");
using (var message = new MailMessage())
{
message.To.Add(new MailAddress(user));
message.From = new MailAddress(user);
message.Subject = "Csv Email";
message.Body = "Hello, here is the daily FutureFills file \r\n" + file;
message.IsBodyHtml = false;
using (var client = new SmptClient("smtp.gmail.com"))
{
client.Port = num;
client.Credentials = new NetworkCredential("email", "password");
client.EnableSsl = true;
client.Send(message);
}
}
return file;
}
файл создан, и он загружается, и электронное письмо отправляется, как ожидалось, загруженный файл имеет правильные данные и формат, но полученное письмо не является файлом CSV в все, я попытался отправить его как вложение и просто отправить его в теле письма, и ни один из них не отправляет файл csv в письме. Это то, что я получаю по электронной почте
Вот файл CSV, который загружается, и это то, что я ожидаю в моем письме
Итак, мой вопрос: что не так с электронной почтой, почему файл создается и загружается на мой рабочий стол, но электронная почта не отправляет файл, даже если я использую вложение в MailMessage
оно не отправляет CSV-файл? Как мне отправить CSV-файл в MailMessage
?