/ / Invio di e-mail con il problema allegato - c #, email, modello-vista-controller, allegato

Invio di e-mail con un allegato: c #, email, modello-vista-controller, allegato

Sto cercando di inviare un messaggio di posta elettronica a diversiutenti (con allegato). L'email viene inviata, ma solo un utente riceve l'allegato (file immagine). Altri destinatari ricevono qualcosa come un'immagine vuota o un'immagine con nome e zero byte.

Non capisco davvero cosa sta andando storto. Ecco il codice che ho usato per l'invio di e-mail:

public void SendWithFile(string recipientName, string body, string subject = null, HttpPostedFileBase emailFile = null)
{
using (var msg = new MailMessage())
{
msg.To.Add(recipientName);
msg.From = new MailAddress(ConfigurationManager.AppSettings["MailServerSenderAdress"]);
msg.Subject = subject;
msg.Body = body;
msg.SubjectEncoding = Encoding.UTF8;
msg.BodyEncoding = Encoding.UTF8;
msg.IsBodyHtml = true;
msg.Priority = MailPriority.Normal;

using (Attachment data = new Attachment(emailFile.InputStream, Path.GetFileName(emailFile.FileName), emailFile.ContentType))
{
msg.Attachments.Add(data);

using (var client = new SmtpClient())
{
//client configs
try
{
client.Send(msg);
}
catch (Exception ex)
{
throw ex;
}
}
}
}
}

e qui è dove chiamo il metodo di invio e-mail:

foreach (var recipent in notesRecipients)
{
if (!string.IsNullOrEmpty(userEmail))
{
if (emailFile != null)
emailService.SendWithFile(userEmail, message, null, emailFile);
}
}

risposte:

0 per risposta № 1

Devi cercare il flusso dall'inizio come in basso prima di inviare l'allegato:

emailFile.InputStream.Position = 0;

Per maggiori informazioni puoi fare riferimento a questa domanda qui: collegamento