Send Boleto.net by email

1

I have a console application that every day during the dawn should send tickets to the customers, access and return of the DB is ok, the system returns a list with all the data of the client / Boleto, in the code example: / p>

string vencimento = "2015-06-04 00:00:00.000";;
            String valorBoleto = "123.11";
            String numeroDocumento = "B20005446";

            //cedente
            String cedente_codigo = "1111111";
            String cedente_nossoNumeroBoleto = "22222222";
            String cedente_cpfCnpj = "123.456.789-01";
            String cedente_nome = "PAULO FREIRE - FOUR FREIRES INF.";
            String cedente_agencia = "1000";
            String cedente_conta = "22507";
            String cedente_digitoConta = "6";

            //sacado
            String sacado_cpfCnpj = "000.000.000-00";
            String sacado_nome = "JOÃO";
            String sacado_endereco = "RUA XV";
            String sacado_bairro = "";
            String sacado_cidade = "";
            String sacado_cep = "";
            String sacado_uf = "";

            Cedente cedente = new Cedente(cedente_cpfCnpj,
            cedente_nome,
            cedente_agencia,
            cedente_conta,
            cedente_digitoConta);

            cedente.Codigo = Convert.ToInt32(cedente_codigo);

            Boleto boleto = new Boleto(Convert.ToDateTime(vencimento), Convert.ToDouble(valorBoleto), "109",  cedente_nossoNumeroBoleto, cedente);
            boleto.NumeroDocumento = numeroDocumento;

            Sacado sacado = new Sacado(sacado_cpfCnpj, sacado_nome);
            boleto.Sacado = sacado;
            boleto.Sacado.Endereco.End = sacado_endereco;
            boleto.Sacado.Endereco.Bairro = sacado_bairro;
            boleto.Sacado.Endereco.Cidade = sacado_cidade;
            boleto.Sacado.Endereco.CEP = sacado_cep;
            boleto.Sacado.Endereco.UF = sacado_uf;

            Instrucao_Itau instrucao = new Instrucao_Itau();
            instrucao.Descricao = "Não Receber após o vencimento";

            boleto.Instrucoes.Add(instrucao);
            EspecieDocumento_Itau especie = new EspecieDocumento_Itau(99);
            boleto.EspecieDocumento = especie;

            BoletoBancario boleto_bancario = new BoletoBancario();
            boleto_bancario.CodigoBanco = 341;
            boleto_bancario.Boleto = boleto;
            boleto_bancario.MostrarCodigoCarteira = true;
            boleto_bancario.Boleto.Valida();

            boleto_bancario.MostrarComprovanteEntrega = true;


            pnl_dados.Visible = false;

            pnl_boleto.Controls.Add(boleto_bancario);

The problem is that I do not know how to ATTACH the Ticket generated by this dll Boleto.net to the customer email, because the way which is the ticket is loaded on the screen for printing.

    
asked by anonymous 10.05.2016 / 17:50

2 answers

3

In GitHub itself Boleto.Net has an example of how to send to email, to verify just access src / Boleto.Net.Site .

Here is the example posted in .aspx , but you can adapt to its context.

protected MailMessage PreparaMail()
    {
        MailMessage mail = new MailMessage();
        mail.To.Add(new MailAddress(TextBox1.Text));
        mail.Subject = "Teste de envio de Boleto Bancário";
        mail.IsBodyHtml = true;
        mail.Priority = MailPriority.High;
        return mail;
    }

    protected BoletoBancario PreparaBoleto()
    {
        DateTime vencimento = new DateTime(2007, 9, 10);

        Instrucao_Itau item1 = new Instrucao_Itau(9, 5);
        Instrucao_Itau item2 = new Instrucao_Itau(81, 10);
        Cedente c = new Cedente("00.000.000/0000-00", "Empresa de Atacado", "0542", "13000");
        //Na carteira 198 o código do Cedente é a conta bancária
        c.Codigo = "13000";

        Boleto b = new Boleto(vencimento, 1642, "198", "92082835", c);
        b.NumeroDocumento = "1008073";

        b.Sacado = new Sacado("000.000.000-00", "Fulano de Silva");
        b.Sacado.Endereco.End = "SSS 154 Bloco J Casa 23";
        b.Sacado.Endereco.Bairro = "Testando";
        b.Sacado.Endereco.Cidade = "Testelândia";
        b.Sacado.Endereco.CEP = "70000000";
        b.Sacado.Endereco.UF = "DF";

        item2.Descricao += " " + item2.QuantidadeDias.ToString() + " dias corridos do vencimento.";
        b.Instrucoes.Add(item1);
        b.Instrucoes.Add(item2);



        BoletoBancario itau = new BoletoBancario();
        itau.CodigoBanco = 341;
        itau.Boleto = b;

        return itau;
    }


    protected void Button1_Click(object sender, EventArgs e)
    {


        BoletoBancario  itau = PreparaBoleto();
        MailMessage mail = PreparaMail();

        if (RadioButton1.Checked)
        {
            mail.Subject += " - On-Line";
            Panel1.Controls.Add(itau);

            System.IO.StringWriter sw = new System.IO.StringWriter();
            HtmlTextWriter htmlTW = new HtmlTextWriter(sw);
            Panel1.RenderControl(htmlTW);
            string html = sw.ToString();
            //
            mail.Body = html;
        }
        else
        {
            mail.Subject += " - Off-Line";
            mail.AlternateViews.Add(itau.HtmlBoletoParaEnvioEmail());
        }

        MandaEmail(mail);
        Label1.Text = "Boleto simples enviado para o email: " + TextBox1.Text;
    }
    protected void Button1_Click2(object sender, EventArgs e)
    {

        BoletoBancario itau = PreparaBoleto();

        // embora estou mandando o mesmo boleto duas vezes, voce pode obviamente mandar boletos distintos
        BoletoBancario[] arrayDeBoletos = new BoletoBancario[] { itau, itau };
        AlternateView  av = BoletoBancario.GeraHtmlDeVariosBoletosParaEmail("Isto é um email com <b>dois</b> boletos", arrayDeBoletos);

        MailMessage  mail = PreparaMail();
        mail.Subject += " - Off-Line - Múltiplo";
        mail.AlternateViews.Add(av);

        MandaEmail(mail);
        Label1.Text = "Boleto múltimplo enviado para o email: " + TextBox1.Text;
    }


    void MandaEmail(MailMessage mail)
    {
        SmtpClient objSmtpClient = new SmtpClient();

        objSmtpClient.Host = "smtp.dominio.com.br";
        objSmtpClient.Port = 25;
        objSmtpClient.EnableSsl = false;
        objSmtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "123456");
        objSmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
        objSmtpClient.Timeout = 10000;
        objSmtpClient.Send(mail);
    }
    
10.05.2016 / 18:01
1

I'm going through something like that, what I did was first save the HTML from the ticket generated on disk, and then use it, in my case I have to upload it to azure storage. In the case of the email it would only change to insert the file generated in the attachment.

To save the file to disk I used the nuget package Pechkin .

Here is an example of the code:

public void SalvarPdfEmDisco(string htmlBoleto, string nomeArquivo, out string caminhoBoleto)
{
    byte[] pdfBuf = new SimplePechkin(new Pechkin.GlobalConfig()).Convert(htmlBoleto);

    caminhoBoleto = "C:\boletos\" + nomeArquivo + ".pdf";

    File.WriteAllBytes(caminhoBoleto, pdfBuf);
}

Then just pass the path of the file returned in the method to the method responsible for sending the email.

protected MailMessage EnviaEmail(string caminhoArquivo)
{
    MailMessage mail = new MailMessage();
    mail.To.Add(new MailAddress("[email protected]"));
    mail.Subject = "Envio de Boleto Bancário";
    mail.IsBodyHtml = true;
    mail.Priority = MailPriority.High;
    mail.Attachments.Add(new Attachment(caminhoArquivo));
    return mail;
}
    
06.03.2017 / 21:09