Why do I get “'property cannot be assigned” when sending an SMTP email?

前端 未结 17 2268
醉话见心
醉话见心 2020-11-22 05:50

I can\'t understand why this code is not working. I get an error saying property can not be assigned

MailMessage mail = new MailMessage();
SmtpClient client          


        
相关标签:
17条回答
  • 2020-11-22 06:38

    This just worked for me as of March 2017. Started with solution from above "Finally got working :)" which didn't work at first.

    SmtpClient client = new SmtpClient();
    client.Port =  587;
    client.Host = "smtp.gmail.com";
    client.EnableSsl = true;
    client.Timeout = 10000;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Credentials = new System.Net.NetworkCredential("<me>@gmail.com", "<my pw>");
    MailMessage mm = new MailMessage(from_addr_text, to_addr_text, msg_subject, msg_body);
    mm.BodyEncoding = UTF8Encoding.UTF8;
    mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
    
    client.Send(mm);
    
    0 讨论(0)
  • 2020-11-22 06:41

    This is how it works for me. Hope you find it useful

    MailMessage objeto_mail = new MailMessage();
    SmtpClient client = new SmtpClient();
    client.Port = 25;
    client.Host = "smtp.internal.mycompany.com";
    client.Timeout = 10000;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Credentials = new System.Net.NetworkCredential("user", "Password");
    objeto_mail.From = new MailAddress("from@server.com");
    objeto_mail.To.Add(new MailAddress("to@server.com"));
    objeto_mail.Subject = "Password Recover";
    objeto_mail.Body = "Message";
    client.Send(objeto_mail);
    
    0 讨论(0)
  • 2020-11-22 06:41

    this would work too..

    string your_id = "your_id@gmail.com";
    string your_password = "password";
    try
    {
       SmtpClient client = new SmtpClient
       {
         Host = "smtp.gmail.com",
         Port = 587,
         EnableSsl = true,
         DeliveryMethod = SmtpDeliveryMethod.Network,
         Credentials = new System.Net.NetworkCredential(your_id, your_password),
         Timeout = 10000,
       };
       MailMessage mm = new MailMessage(your_iD, "recepient@gmail.com", "subject", "body");
       client.Send(mm);
       Console.WriteLine("Email Sent");
     }
     catch (Exception e)
     {
       Console.WriteLine("Could not end email\n\n"+e.ToString());
     }
    
    0 讨论(0)
  • 2020-11-22 06:42

    This answer features:

    • Using 'using' whenever possible (IDisposable interfaces)
    • Using Object initializers
    • Async Programming
    • Extract SmtpConfig to external class (adjust it to your needs)

    Here's the extracted code:

        public async Task SendAsync(string subject, string body, string to)
        {
            using (var message = new MailMessage(smtpConfig.FromAddress, to)
            {
                Subject = subject,
                Body = body,
                IsBodyHtml = true
            })
            {
                using (var client = new SmtpClient()
                {
                    Port = smtpConfig.Port,
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = false,
                    Host = smtpConfig.Host,
                    Credentials = new NetworkCredential(smtpConfig.User, smtpConfig.Password),
                })
                {
                    await client.SendMailAsync(message);
                }
            }                                     
        }
    

    Class SmtpConfig:

    public class SmtpConfig
    {
        public string Host { get; set; }
        public string User { get; set; }
        public string Password { get; set; }
        public int Port { get; set; }
        public string FromAddress { get; set; }
    }
    
    0 讨论(0)
  • 2020-11-22 06:48

    Initialize the MailMessage with sender and reciever's email addresses. It should be something like

    string from = "codeforwin@gmail.com";  //Senders email   
    string to = "reciever@gmail.com";  //Receiver's email  
    MailMessage msg = new MailMessage(from, to); 
    

    Read the full code snippet of how to send emails in c#

    0 讨论(0)
  • 2020-11-22 06:49

    First go to https://myaccount.google.com/lesssecureapps and make Allow less secure apps true.

    Then use the below code. This below code will work only if your from email address is from gmail.

    static void SendEmail()
        {
            string mailBodyhtml =
                "<p>some text here</p>";
            var msg = new MailMessage("from@gmail.com", "to1@gmail.com", "Hello", mailBodyhtml);
            msg.To.Add("to2@gmail.com");
            msg.IsBodyHtml = true;
            var smtpClient = new SmtpClient("smtp.gmail.com", 587); //**if your from email address is "from@hotmail.com" then host should be "smtp.hotmail.com"**
            smtpClient.UseDefaultCredentials = true;
            smtpClient.Credentials = new NetworkCredential("from@gmail.com", "password");
            smtpClient.EnableSsl = true;
            smtpClient.Send(msg);
            Console.WriteLine("Email Sent Successfully");
        }
    
    0 讨论(0)
提交回复
热议问题