Отправьте электронное письмо с помощью System.Net.Mail через gmail - программирование
Подтвердить что ты не робот

Отправьте электронное письмо с помощью System.Net.Mail через gmail

Я хочу отправить электронное письмо через сервер gmail. Я поставил следующий код, но он застревает во время отправки. Любая идея, пожалуйста....

MailMessage mail = new MailMessage();

        mail.From = new System.Net.Mail.MailAddress("[email protected]");

        //create instance of smtpclient
        SmtpClient smtp = new SmtpClient();
        smtp.Port = 465;
        smtp.UseDefaultCredentials = true;

        smtp.Host = "smtp.gmail.com";            

        smtp.EnableSsl = true;

        //recipient address
        mail.To.Add(new MailAddress("[email protected]"));

        //Formatted mail body
        mail.IsBodyHtml = true;
        string st = "Test";

        mail.Body = st;
        smtp.Send(mail);

xxxx.com - это почтовый домен в приложениях Google. Спасибо...

4b9b3361

Ответ 1

MailMessage mail = new MailMessage();
mail.From = new System.Net.Mail.MailAddress("[email protected]");

// The important part -- configuring the SMTP client
SmtpClient smtp = new SmtpClient();
smtp.Port = 587;   // [1] You can try with 465 also, I always used 587 and got success
smtp.EnableSsl = true;
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; // [2] Added this
smtp.UseDefaultCredentials = false; // [3] Changed this
smtp.Credentials = new NetworkCredential(mail.From,  "password_here");  // [4] Added this. Note, first parameter is NOT string.
smtp.Host = "smtp.gmail.com";            

//recipient address
mail.To.Add(new MailAddress("[email protected]"));

//Formatted mail body
mail.IsBodyHtml = true;
string st = "Test";

mail.Body = st;
smtp.Send(mail);

Ответ 2

Я попробовал вышеуказанный код С# для отправки почты из Gmail в свой корпоративный идентификатор. Во время выполнения приложения управление остановилось на неопределенное время в заявлении smtp.Send(mail);

В то время как Googling, я наткнулся на аналогичный код, который работал на меня. Я размещаю этот код здесь.

class GMail
{
    public void SendMail()
    {  
        string pGmailEmail = "[email protected]";
        string pGmailPassword = "GmailPassword";
        string pTo = "ToAddress"; //[email protected]
        string pSubject = "Test From Gmail";
        string pBody = "Body"; //Body
        MailFormat pFormat = MailFormat.Text; //Text Message
        string pAttachmentPath = string.Empty; //No Attachments

        System.Web.Mail.MailMessage myMail = new System.Web.Mail.MailMessage();
        myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/smtpserver",
                          "smtp.gmail.com");
        myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/smtpserverport",
                          "465");
        myMail.Fields.Add
            ("http://schemas.microsoft.com/cdo/configuration/sendusing",
                          "2");
        //sendusing: cdoSendUsingPort, value 2, for sending the message using 
        //the network.

        //smtpauthenticate: Specifies the mechanism used when authenticating 
        //to an SMTP 
        //service over the network. Possible values are:
        //- cdoAnonymous, value 0. Do not authenticate.
        //- cdoBasic, value 1. Use basic clear-text authentication. 
        //When using this option you have to provide the user name and password 
        //through the sendusername and sendpassword fields.
        //- cdoNTLM, value 2. The current process security context is used to 
        // authenticate with the service.
        myMail.Fields.Add
        ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
        //Use 0 for anonymous
        myMail.Fields.Add
        ("http://schemas.microsoft.com/cdo/configuration/sendusername",
            pGmailEmail);
        myMail.Fields.Add
        ("http://schemas.microsoft.com/cdo/configuration/sendpassword",
             pGmailPassword);
        myMail.Fields.Add
        ("http://schemas.microsoft.com/cdo/configuration/smtpusessl",
             "true");
        myMail.From = pGmailEmail;
        myMail.To = pTo;
        myMail.Subject = pSubject;
        myMail.BodyFormat = pFormat;
        myMail.Body = pBody;
        if (pAttachmentPath.Trim() != "")
        {
            MailAttachment MyAttachment =
                    new MailAttachment(pAttachmentPath);
            myMail.Attachments.Add(MyAttachment);
            myMail.Priority = System.Web.Mail.MailPriority.High;
        }

        SmtpMail.SmtpServer = "smtp.gmail.com:465";
        SmtpMail.Send(myMail);
    }
}

Ответ 3

Установите smtp.UseDefaultCredentials = false и используйте smtp.Credentials = новый NetworkCredential (gMailAccount, пароль);

Ответ 4

Использовать номер порта 587

Со следующим кодом он будет работать успешно.

MailMessage mail = new MailMessage();
mail.From = new MailAddress("[email protected]", "Enquiry");
mail.To.Add("[email protected]");
mail.IsBodyHtml = true;
mail.Subject = "Registration";
mail.Body = "Some Text";
mail.Priority = MailPriority.High;

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
//smtp.UseDefaultCredentials = true;
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "<my gmail pwd>");
smtp.EnableSsl = true;
//smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

smtp.Send(mail);

Но есть проблема с использованием gmail. Письмо будет отправлено успешно, но почтовый ящик получателя будет иметь адрес gmail в "from address" вместо "from address", упомянутый в коде.

Чтобы решить эту проблему, выполните действия, указанные в следующей ссылке.

http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html

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

http://karmic-development.blogspot.in/2013/11/allow-account-access-while-sending.html

Ответ 5

    ActiveUp.Net.Mail.SmtpMessage smtpmsg = new ActiveUp.Net.Mail.SmtpMessage();
    smtpmsg.From.Email = "[email protected]";
    smtpmsg.To.Add(To);
    smtpmsg.Bcc.Add("[email protected]");
    smtpmsg.Subject = Subject;
    smtpmsg.BodyText.Text = Body;

    smtpmsg.Send("mail.test.com", "[email protected]", "[email protected]", ActiveUp.Net.Mail.SaslMechanism.Login);

Ответ 6

Это сработало для меня:

        MailMessage message = new MailMessage("[email protected]", toemail, subjectEmail, comments);
        message.IsBodyHtml = true;

        try {
            SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            client.Timeout = 2000;
            client.EnableSsl = true;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            //client.Credentials = CredentialCache.DefaultNetworkCredentials;
            client.UseDefaultCredentials = false;
            client.Credentials = new System.Net.NetworkCredential("[email protected]", "mypassord");
            client.Send(message);

            message.Dispose();
            client.Dispose();
        }
        catch (Exception ex) {
            Debug.WriteLine(ex.Message);
        }

НО (на момент написания этой статьи - октябрь 2017 года)

Вам необходимо включить "Разрешить менее безопасные приложения" в опции "Приложения с доступом к учетной записи" в настройках безопасности "Моя учетная запись" для защиты/конфиденциальности Google (https://myaccount.google.com)