How to send an email without sending an attachment?

2

Hello, I have a question: I made a script to send email, but I would like that when sending it the user does not have to necessarily put an attachment (that is, leave the sending of the attachment not mandatory). How could I do that?

Follow the script:

public void EnviarEmail()
    {
        System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
        //Identificação do destinario
        msg.To.Add(txtPara.Text);
        //Identificação do Email
        msg.From = new System.Net.Mail.MailAddress("[email protected]");
        //assunto do email
        msg.Subject = txtAssunto.Text;
        //Corpo do email
        msg.Body = txtMensagem.Text;
        //Anexo
        System.Net.Mail.Attachment anexo = new System.Net.Mail.Attachment(txtAnexo.Text);
        msg.Attachments.Add(anexo);
        //coloque seu servidor smtp e porta 587 (configuração smtp do gmail)
        System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.live.com", 587);
        smtp.EnableSsl = true;

        //login do email que vai enviar as mensagens
        smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "senha");
        smtp.Send(msg);
        MessageBox.Show("Email enviado!");
        txtAnexo.Clear();
        txtAssunto.Clear();
        txtMensagem.Clear();
        txtPara.Clear();     
    }

private void btnEnviar_Click(object sender, EventArgs e)
    {
            EnviarEmail();    
    }

That's it. can anybody help me? Thank you.

    
asked by anonymous 21.09.2016 / 16:15

2 answers

1

You can do this:

This code checks to see if an attachment has been informed, and it verifies that the file actually exists so that it can be sent, if these conditions are not true, it sends the email without an attachment.

if (!string.IsNullOrEmpty(txtAnexo.Text) && File.Exists(txtAnexo.Text))
{
    System.Net.Mail.Attachment anexo = new System.Net.Mail.Attachment(txtAnexo.Text);
    msg.Attachments.Add(anexo);
}

I noticed that you are not using the using in your code, it serves to free the objects from memory when they are no longer being used.

Here you explain the importance of using the: What is the use of using?

    public void EnviarEmail()
    {
        using (System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage())
        {
            //Identificação do destinario
            msg.To.Add(txtPara.Text);

            //Identificação do Email
            msg.From = new System.Net.Mail.MailAddress("[email protected]");

            //assunto do email
            msg.Subject = txtAssunto.Text;

            //Corpo do email
            msg.Body = txtMensagem.Text;

            //Anexo - 
            //Verifica se a txtAnexo.Text não é vazio or null e verifica se existe o anexo no caminho informado
            // Se tiver tudo ok ele envia com anexo, se não envia sem anexo
            if (!string.IsNullOrEmpty(txtAnexo.Text) && File.Exists(txtAnexo.Text))
            {
                System.Net.Mail.Attachment anexo = new System.Net.Mail.Attachment(txtAnexo.Text);
                msg.Attachments.Add(anexo);
            }

            //coloque seu servidor smtp e porta 587 (configuração smtp do gmail)
            using (System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.live.com", 587))
            {
                smtp.EnableSsl = true;

                //login do email que vai enviar as mensagens
                smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "senha");
                smtp.Send(msg);

                MessageBox.Show("Email enviado!");

                txtAnexo.Clear();
                txtAssunto.Clear();
                txtMensagem.Clear();
                txtPara.Clear();
            }
        }
    }
    
21.09.2016 / 16:47
2

Just remove the lines you create and add an attachment to the message. There is nothing that requires an attachment to be added.

msg.Body = txtMensagem.Text;

//Anexo
//System.Net.Mail.Attachment anexo = new System.Net.Mail.Attachment(txtAnexo.Text);
//msg.Attachments.Add(anexo);

If you want to leave sending attachment as optional, just use one condition

if(anexoValido)
{
    System.Net.Mail.Attachment anexo = new System.Net.Mail.Attachment(txtAnexo.Text);
    msg.Attachments.Add(anexo);
}
    
21.09.2016 / 16:55