как отправить почту из .net? - PullRequest
1 голос
/ 12 апреля 2011

я написал метод, как показано ниже, я получил ошибку, поскольку указанная строка не в форме, необходимой для адреса электронной почты Пожалуйста, помогите мне

SendMail("xyz@gmail.com","hi","heloo");

public bool SendMail(string toMailAddress, string mailSubject, string mailMessage)
    {

         string smtphost ="smtp.gmail.com";
            int smtpport = 100;
            string smtpuser ="xyz";
            string smtppwd = "xyz";
            SmtpClient client = null;



            string MessageBody = string.Empty;
            try
            {

                message = new MailMessage();
                message.From = new MailAddress(smtpuser);
                message.To.Add(toMailAddress);
                message.BodyEncoding = System.Text.Encoding.UTF8;
                message.Subject = mailSubject;
                message.Body = mailMessage.ToString();



                message.IsBodyHtml = true;

                client = new SmtpClient();
                client.Host = smtphost;

                client.Port = smtpport;
                client.Credentials = new System.Net.NetworkCredential(smtpuser, smtppwd);
                client.Send(message);
            }
            catch (Exception ex)
            {
                string x = ex.Message;
            }
            return true;
        }

Ответы [ 4 ]

0 голосов
/ 12 апреля 2011

Этот код будет работать. То, что я сделал, это

  1. правильный smtphost
  2. правильный smtpport - 587
  3. Включить SSL
  4. Установите для UseDefaultCredentials значение false перед установкой учетных данных
  5. набор DeliveryMethod
 public static bool SendMail(string toMailAddress, string mailSubject, string   mailMessage)
    {            
        string smtphost = "smtp.gmail.com";
        int smtpport = 587;
        string smtpuser = "youremail@gmail.com";
        string smtppwd = "password";

        SmtpClient client = null;



        string MessageBody = string.Empty;
        try
        {

            var message = new MailMessage();
            message.From = new MailAddress(smtpuser);                
            message.To.Add(toMailAddress);
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.Subject = mailSubject;
            message.Body = mailMessage.ToString();
            message.IsBodyHtml = true;

            client = new SmtpClient();
            client.Host = smtphost;                
            client.EnableSsl = true;
            client.Port = smtpport;
            client.UseDefaultCredentials = false;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Credentials = new System.Net.NetworkCredential(smtpuser, smtppwd);

            client.Send(message);
        }
        catch (Exception ex)
        {
            string x = ex.InnerException.Message;
            Console.WriteLine(x);
        }
        return true;

    }
0 голосов
/ 12 апреля 2011

Попробуйте, с портом 25 и IsSSLEnabled как истина, так как для сервера Gmail включена поддержка SSL

0 голосов
/ 12 апреля 2011

Убедитесь, что toMailAddress и smtpuser являются действительными адресами электронной почты.Попробуйте, используя smtpport = 587;предоставляется Gmail для исходящей почты (SMTP).Надеюсь, что это сделает это нормально.Пожалуйста, перечислите ошибки, с которыми вы столкнулись.

0 голосов
/ 12 апреля 2011

Ваш пользователь "from" должен быть в форме действующего адреса электронной почты.

message.From = new MailAddress(smtpuser);

Также вам потребуется использовать конструктор MailAddress для свойства .To.

...