#c# #html #asp.net #email #attachment
#c# #HTML #asp.net #Адрес электронной почты #вложение
Вопрос:
Проблема:
Я хочу, чтобы пользователи могли отправлять мне письма с вложениями. Они могут выбрать файл с помощью кнопки ввода файла в html. Проблема в том, что он не может найти файл. Он отлично работает без вложений.
Я получаю эту ошибку
Не удается найти файл C: Program Files (x 86) ExpressGIPENGLISH .pptx IIS.
У кого-нибудь есть какие-нибудь идеи?
Что я пробовал:
Попытался сначала загрузить файл в это местоположение, но все еще не работает.
Кнопка ввода файла
<INPUT type=file id=File1 name=File1 runat="server" >amp;nbsp; </asp:Content>
Код на C #
System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment(System.IO.Path.GetFileName(File1.PostedFile.FileName));
MailMessage mail = new MailMessage("d***t@gmail.com", "d***t@gmail.com");
SmtpClient client = new SmtpClient();
client.UseDefaultCredentials = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("d***t@gmail.com", "");
mail.BodyEncoding = Encoding.UTF8;
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
mail.Subject = TxtOnderwerp.Text;
mail.Body = TxtMail.Text;
mail.Body = Environment.NewLine "Van " TxtNaam.Text;
mail.Body = Environment.NewLine " Deze persoon is te bereiken op het mail adres " TxtEmail.Text " of op het nummer " TxtTel.Text;
mail.Attachments.Add(attachment);
client.Send(mail);
Результат: я хочу, чтобы пользователь мог отправить мне письмо с вложением, которое он выбрал сам, которое находится на его компьютере. И что я могу получать почту и открывать вложение. Заранее благодарю вас
Ответ №1:
Ниже приведен полный пример добавления файлов в сообщение электронной почты в качестве вложения без записи их на диск.
using (SmtpClient client = new SmtpClient())
using (MailMessage message = new MailMessage())
{
client.Host = "host.com";
client.Port = 25;
client.Timeout = 10000;
client.EnableSsl = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("user", "pass");
message.From = new MailAddress("email@from.nl", "VDWWD");
message.To.Add(new MailAddress("email@to.nl"));
message.Subject = "Your uploaded files";
message.IsBodyHtml = true;
message.Body = "<html><head></head><body><font face="arial" size="2"><b>The files you uploaded.</b></font></body></html>";
//loop all the uploaded files
foreach (var file in FileUpload1.PostedFiles)
{
//add the file from the fileupload as an attachment
message.Attachments.Add(new Attachment(file.InputStream, file.FileName, MediaTypeNames.Application.Octet));
}
//send mail
try
{
client.Send(message);
}
catch (Exception ex)
{
//handle error
}
}
Ответ №2:
Вам нужно будет сохранить отправленный файл на свой сервер, прежде чем вы сможете добавить его в качестве вложения. Вы также можете добавить вложение из MemoryStream, так что это может быть другой способ без необходимости сохранять сам файл.
Комментарии:
1.… или самый простой способ: использовать непосредственно для создания
HttpPostedFile.InputStream
…Attachment
Вам нужно будет сохранить отправленный файл на свой сервер, прежде чем вы сможете добавить его в качестве вложения. Вы также можете добавить вложение из MemoryStream, так что это может быть другой способ без необходимости сохранять сам файл. нет сохранения, нет ненужного MemoryStream2. @Selvin у вас есть дополнительная информация об этом или пример? Я посмотрел его, и для меня это очень сложно. Начал программировать всего несколько месяцев назад . Заранее благодарю вас
3. Нет, как говорит @Selvin, вам не нужно сначала сохранять его на сервере, чтобы добавить в качестве вложения.