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 № 1Devi 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