Gmail: Как отправить электронное письмо программно - PullRequest
6 голосов
/ 25 августа 2009

Возможный точный дубликат: Отправка электронной почты в C # .NET через Gmail

Привет

Я пытаюсь отправить электронное письмо с помощью gmail:

Я пробовал различные примеры, найденные на этом и других сайтах, но всегда получаю одну и ту же ошибку:
Невозможно подключиться к удаленному серверу -> System.net.Sockets.SocketException: не удалось установить соединение, так как цель активно отказала ему в этом 209.85.147.109:587

    public static void Attempt1()
    {
        var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("MyEmailAddress@gmail.com", "MyPassWord"),
            EnableSsl = true
        };
        client.Send("MyEmailAddress@gmail.com", "some.email@some.com", "test", "testbody"); 
    }

Есть идеи?

UPDATE

Подробнее.

Может быть, я должен сказать, какие другие попытки, которые я предпринял, дали мне ту же ошибку: (Обратите внимание, что когда я не указал порт, он попробовал порт 25)

    public static void Attempt2()
    {
        var fromAddress = new MailAddress("MyEmailAddy@gmail.com", "From Name");
        var toAddress = new MailAddress("MyEmailAddy@dfdf.com", "To Name");
        const string fromPassword = "pass";
        const string subject = "Subject";
        const string body = "Body";
        var smtp = new SmtpClient
        {
            Host = "smtp.gmail.com",
            Port = 587,
            EnableSsl = true,
            DeliveryMethod = SmtpDeliveryMethod.Network,
            UseDefaultCredentials = false,
            Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
        };
        using (var message = new MailMessage(fromAddress, toAddress)
        {
            Subject = subject,
            Body = body
        }
            ) { smtp.Send(message); }
    }


    public static void Attempt3()
    {
        MailMessage mail = new MailMessage();
        mail.To.Add("MyEmailAddy@dfdf.com");
        mail.From = new MailAddress("MyEmailAddy@gmail.com");
        mail.Subject = "Email using Gmail";

        string Body = "Hi, this mail is to test sending mail" +
                      "using Gmail in ASP.NET";
        mail.Body = Body;

        mail.IsBodyHtml = true;
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.Credentials = new System.Net.NetworkCredential
             ("MyEmailAddy@gmail.com", "pass");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }

Ответы [ 6 ]

9 голосов
/ 25 августа 2009

Я использую следующий код:

SmtpClient sc = new SmtpClient("smtp.gmail.com");
NetworkCredential nc = new NetworkCredential("username", "password");//username doesn't include @gmail.com
sc.UseDefaultCredentials = false;
sc.Credentials = nc;
sc.EnableSsl = true;
sc.Port = 587;
try {
    sc.Send(mm);
} catch (Exception ex) {
    EventLog.WriteEntry("Error Sending", EventLogEntryType.Error);
}
2 голосов
/ 01 ноября 2013

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

MailMessage mail = new MailMessage();
mail.From = new MailAddress("abc@mydomain.com", "Enquiry");
mail.To.Add("abcdef@yahoo.com");
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("xyz@gmail.com", "<my gmail pwd>");
smtp.EnableSsl = true;
//smtp.DeliveryMethod = SmtpDeliveryMethod.Network;

smtp.Send(mail);

Но есть проблема с использованием Gmail. Письмо будет успешно отправлено, но в папке «Входящие» получателя будет указан адрес электронной почты в поле «from» вместо адреса «from», указанного в коде.

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

http://karmic -development.blogspot.in / 2013/10 / отправить электронную почту-из-сети САШ, использующих-Gmail-as.html

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

http://karmic -development.blogspot.in / 2013/11 / разрешить-счет-доступа, а-sending.html

1 голос
/ 14 декабря 2010

Вы уверены, что ваша учетная запись GMail настроена для разрешения соединений POP / SMTP? Это настраиваемая опция, которую вы можете включать и выключать по своему усмотрению.

1 голос
/ 14 февраля 2010

Вот мой ресурс подключения для подключения к Gmail из Java

<!-- Java Mail -->
    <Resource name="mail/MailSession" auth="Container" type="javax.mail.Session" 
                mail.debug="true"
                mail.transport.protocol="smtp"
                mail.smtp.host="smtp.gmail.com"
                mail.smtp.user="youremail@gmail.com"
                mail.smtp.password="yourpassword"
                mail.smtp.port="465"
                mail.smtp.starttls.enable="true"
                mail.smtp.auth="true"
                mail.smtp.socketFactory.port="465"
                mail.smtp.socketFactory.class="javax.net.ssl.SSLSocketFactory"
                mail.smtp.socketFactory.fallback="false" 
                mail.store.protocol="pop3"
                mail.pop3.host="pop.gmail.com"
                mail.pop3.port="995" />

Подключите свою учетную запись Gmail к защищенным портам (465 для SMTP и 995 для POP3) и используйте любую доступную фабрику .NET SSL для безопасного подключения к Gmail.

0 голосов
/ 02 января 2014

Попробуйте использовать номер порта 465 для SSL-соединения

0 голосов
/ 14 февраля 2010

Вы можете увидеть мой пост в блоге здесь по адресу http://codersatwork.wordpress.com/2010/02/14/sending-email-using-gmail-smtp-server-and-spring-mail/, в котором объясняется, как использовать Spring Mail для отправки электронной почты через SMTP-сервер Gmail.

Я использовал java, но вы можете увидеть конфигурацию и использовать ее в своем коде c #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...