добавлять присоединенный файл excel к отправлению почты c#

У меня есть следующие методы, чтобы экспортировать сверчка в excel и чтобы посылать почту, но я не понимаю, как перемещать excel, произведенный в метод посылать почту без того, чтобы пользователь был должен присоединять excel с диалоговым окном.

private void btn_enviarcorreo_Click(object sender, EventArgs e)
        {
            correo();
        }
     public void correo()
        {
            try
            {

                    string remi = "prueba@gmail.com";
                    string pass = "------";
                    string nombre = "frusan";
                    string txtcc = "";
                    string txtasunto = "notificacion enviado";
                    string txtpara = "holamundo@gmail.com";
                    string rtbmensaje = "<html><head></head><body><img src='https://www.frusan.cl/wp-content/uploads/2014/07/frusan_marcas2.png'><h1>Notificacion de Despacho</h1><ul><li>Se informa que se acaba de realizar un despacho Planta Frusan Angol.</li><li>Instructivo Transportista '"+lblrut.Text+"' numero de nave: '"+ lblnave.Text+"' </li><li>Saluda atentamente a usted el equipo de Frusan.</li></ul></body></html>";
                    //string rtbmensaje = "estimado cliente informamos que usted pose uno o mas extintores por vencer";
                    enviar_correo("smtp.gmail.com", 587, remi, pass, nombre, txtpara, txtcc, txtasunto, rtbmensaje);

            }
            catch (Exception f)
            {
                MessageBox.Show("Error al enviar notificacion", "N500-1");
            }

        }

    public void enviar_correo(string host, int puerto, string remitente, string contraseña, string nombre, string destinatarios, string cc, string asunto, string cuerpo)
        {
            try
            {
                SmtpClient cliente = new SmtpClient(host, puerto);
                MailMessage correo = new MailMessage();

                correo.From = new MailAddress(remitente, nombre);
                correo.Body = cuerpo;
                correo.Subject = asunto;
                if (destinatarios == "") { }
                else
                {
                    string[] cadena = destinatarios.Split(delimitador_cc);
                    foreach (string word in cadena) correo.To.Add(word.Trim());
                }
                if (cc == "") { }
                else
                {
                    string[] cadena1 = cc.Split(delimitador_cc);
                    foreach (string word in cadena1) correo.CC.Add(word.Trim());
                }
                cliente.Credentials = new NetworkCredential(remitente, contraseña);
                cliente.EnableSsl = true;
                correo.IsBodyHtml = true;
                cliente.Send(correo);

                MessageBox.Show("El correo se ha enviado correctamente");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }
     public void exportar(DataGridView tabla)
        {//exporta datos de la grilla a un excel
            {

                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();

                excel.Application.Workbooks.Add(true);
                int IndiceColumna = 0;
                foreach (DataGridViewColumn col in tabla.Columns) // Columnas
                {
                    IndiceColumna++;
                    excel.Cells[1, IndiceColumna] = col.Name;
                }
                int IndeceFila = 0;
                foreach (DataGridViewRow row in tabla.Rows) // Filas
                {
                    IndeceFila++;
                    IndiceColumna = 0;
                    foreach (DataGridViewColumn col in tabla.Columns)
                    {
                        IndiceColumna++;
                        excel.Cells[IndeceFila + 1, IndiceColumna] = row.Cells[col.Name].Value;
                    }
                }
                excel.Visible = true;
            }
        }
2
задан 21.03.2019, 16:08
1 ответ

Перед тем, как звонить в mГ©todo enviarCorreo добавляют присоединенный документ: предполагая, что твой документ приходит из метода GeneraDocumentoAdjunto

//documento adjunto
 var docAdjunto = GeneraDocumentoAdjunto();
correo.Attachments.Add(docAdjunto);

Cabe seГ±alar, что GeneraDocumentoAdjunto возвращает тип Attachmnent

, пример:

 private Attachment GeneraDocumentoAdjunto(Alumno alumno, string nombreDocumento)
        {
            HtmlToPdf converter = new HtmlToPdf();


            string htmlString = GeneraFormatoTipoDocumento(alumno,nombreDocumento);

                    PdfDocument doc = converter.ConvertHtmlString(htmlString);

            MemoryStream memoryStream = new MemoryStream();
            doc.Save(memoryStream);

            byte[] bytes = memoryStream.ToArray();

            memoryStream.Close();
            //esto es lo importante agregas un stream y el nombre del archivo.
            return new Attachment(new MemoryStream(bytes),"Constancia.pdf");
        }

типов Привета

3
ответ дан 02.12.2019, 05:18