Search code examples
c#emailsmtpgmailsend

Gmail email send c#


This code works when i try send message to this same email but on other, don't works without error

        var smtpClient = new SmtpClient("smtp.gmail.com")
        {
            Port = 587,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential("[email protected]", "myapppass"),
            EnableSsl = true,
        };

        smtpClient.Send("[email protected]", "email", "Authorization!", "body");

Solution

  • Try formatting the message as I have here. and use Authenticate instead of NetworkCredential.

    using MailKit.Net.Smtp;
    using MimeKit;
    
    Console.WriteLine("Hello, World!");
    
    var message = new EmailMessage()
    {
        From = "[email protected]",
        To = "[email protected]",
        MessageText = "test",
        Subject = "test"
    };
    
    try
    {
        using (var client = new SmtpClient())
        {
            client.Connect("smtp.gmail.com", 465, true);
            client.Authenticate(message.From, "AppsPassword");
            client.Send(message.GetMessage());
            client.Disconnect(true);
        }
    
       
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    
    
    public class EmailMessage
    {
        public string To { get; set; }
        public string From { get; set; }
        public string Subject { get; set; }
        public string MessageText { get; set; }
    
        public MimeMessage GetMessage()
        {
            var body = MessageText;
            var message = new MimeMessage();
            message.From.Add(new MailboxAddress("test", From));
            message.To.Add(new MailboxAddress("test", To));
            message.Subject = Subject;
            message.Body = new TextPart("plain") { Text = body };
            return message;
        }
    }