Почему нельзя прикреплять вложения по почте с помощью sendgrid? - PullRequest
0 голосов
/ 19 января 2019

Когда я пытаюсь отправить электронное письмо с вложениями, расположенными на диске Google или в маршруте хранилища, оно отправляет только электронное письмо, но без файлов.

Я пытаюсь загрузить файл в байтах и ​​затем отправить его каквложение

Используется следующий код

List<Attachment> files = new List<Attachment>
{  
   new Attachment()
   {
      Content = "BwdW",
      Type = "image/png",
      Filename = Server.MapPath("~/Content/IMG/EmailHeader.png"),
      Disposition = "inline",
      ContentId = "EmailHeader"
   } 
};

Это метод:

 public Boolean EnvioCorreo_Copias_Archivos(string cuerpo, string asunto, string correoEmisor, List<EmailAddress> correoReceptor,
                                               List<Attachment> Archivos)
    {
        try
        {
            var clientSendGrid = new SendGridClient("Key_Sendgrid");
            var from = new EmailAddress(correoEmisor, "Alias"); 
            List<EmailAddress> tos = correoReceptor;

            var body = cuerpo; 
            var subject = asunto;
            var plainTextContent = "";
            var htmlContent = body;
            var showAllRecipients = true;

            var msg = MailHelper.CreateSingleEmailToMultipleRecipients(from, tos, subject, plainTextContent, htmlContent, showAllRecipients); 
            msg.AddAttachments(Archivos); 
            clientSendGrid.SendEmailAsync(msg).Wait(); 
            return true;
        }
        catch (Exception)
        {

            return false;
        }
    }

1 Ответ

0 голосов
/ 14 февраля 2019

Я только что подтвердил, что это работает с SendGrid, вложение работает нормально:

var msg = new MailMessage(fromAddress, toAddress)
{
  Subject = "attachment test", 
  IsBodyHtml = true, 
  Body = "this is the body"
};

var attachment = new Attachment(attachmentPath);
msg.Attachments.Add(attachment);

using (var client = new SmtpClient("smtp.sendgrid.net"))
{
  client.UseDefaultCredentials = false;
  client.EnableSsl = true;
  client.Port = 587;
  client.Credentials = new NetworkCredential("key","password");

  await client.SendMailAsync(msg);
}
...