прикрепить файл Excel в SMTP-почте в C # - PullRequest
0 голосов
/ 13 июня 2018

В моем решении есть файл excel с именем Book1.xlsx .Я хочу прикрепить его к своей почте и отправить.

Вот мой код:

public void mailer()
{      
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.Port = 587;
    smtp.UseDefaultCredentials = false;
    smtp.Credentials = new System.Net.NetworkCredential("np4652@gmail.com", "Si9369787348");
    smtp.EnableSsl = true;
    MailMessage mail = new MailMessage();

    string FileName = System.IO.Path.GetFileName(Server.MapPath("excel/Book1.xlsx"));
    mail.Attachments.Add(new Attachment(FileName));           
    mail.IsBodyHtml = true;
    mail.Subject = "status";
    mail.Body = "Today's list " + "<br/>" + Label1.Text;
    mail.To.Add("amit@lmscert.com");
    mail.From = new MailAddress("np4652@gmail.com");
    smtp.Send(mail);
}

Но я получаю следующую ошибку:

Исключение:Тип 'System.IO.FileNotFoundException' произошел в mscorlib.dll, но не был обработан в коде пользователя

Дополнительная информация: Не удалось найти файл 'C: \ Program Files \ IIS Express \ Book1.xlsx'.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

попробуйте этот код в filepath

  string path = Path.Combine(HttpRuntime.AppDomainAppPath, "excel/Book1.xlsx"); 
                            attachment = new System.Net.Mail.Attachment(path);
0 голосов
/ 13 июня 2018

Вы передаете только имя файла, которое преобразуется в относительный путь, равный C:\Program Files\IIS Express, потому что ваш код выполняется в IIS Express:

string FileName = System.IO.Path.GetFileName(Server.MapPath("excel/Book1.xlsx"));
mail.Attachments.Add(new Attachment(FileName));           

Вам необходимо пройти полный путь, просто удалитеGetFileName():

string FileName = Server.MapPath("excel/Book1.xlsx");
mail.Attachments.Add(new Attachment(FileName));           
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...