Отправка электронной почты через SMTP-сервер Gmail с C #


243

По какой-то причине ни принятый ответ, ни какие-либо другие не работают для меня на « Отправка электронной почты в .NET через Gmail ». Почему они не работают?

ОБНОВЛЕНИЕ: я попробовал все ответы (принятые и другие) в другом вопросе, но ни один из них не работает.

Я просто хотел бы знать, работает ли это для кого-то еще, иначе Google, возможно, изменил что-то (что случилось прежде).

Когда я пытаюсь использовать фрагмент кода SmtpDeliveryMethod.Network, я быстро получаю SmtpException при отправке (сообщение). Сообщение

SMTP-сервер требует безопасного соединения, или клиент не был аутентифицирован.

Ответ сервера был:

5.5.1 Требуется аутентификация. Узнайте больше на "<- серьезно, это заканчивается там.

ОБНОВИТЬ:

Это вопрос, который я задавал давным-давно, и принятым ответом является код, который я использовал много раз в разных проектах.

Я взял некоторые идеи из этого поста и других проектов EmailSender, чтобы создать проект EmailSender в Codeplex . Он предназначен для тестирования и поддерживает мои любимые SMTP-сервисы, такие как GoDaddy и Gmail.


Я пытался сделать это, используя похожие методы на другом языке. Столкнулся с тем же типом вещей: старые документированные методы, которые работали раньше, у меня не работали. Таким образом, вы задаетесь вопросом, изменил ли Google что-то, или вы сделали что-то не так.
— AaronLS,

3
@aaronls единственное недавнее изменение, похоже, связано с портом 465. Я попробовал это, ища решение (я только работал над тем же самым), и время ожидания порта 465 все время. Если это ваш случай, попробуйте использовать порт 587.
— eglasius

2
Эта проблема связана с «проверкой слова» (капча). Если вы войдете через веб-интерфейс вручную и введете код проверки, ваш SMTP начнет работать.
— Роберт Коритник

4
FWIW, у меня работает. вам нужно использовать 587 и .EnableSSL true. c # 4 / .NET 4 в настоящее время не поддерживает альтернативный 465 / SSL. Gmail требует настройки других почтовых клиентов .
— gerryLowry

1
Следуйте ответу @eglasius и убедитесь, что вы включили параметр «Разрешить менее безопасные приложения» в Gmail, чтобы разрешить gmail аутентифицировать вашу учетную запись.
— user2713706

Ответы:


291

CVertex, обязательно просмотрите свой код и, если это ничего не раскрывает, опубликуйте его. Я просто включил это на тестовом сайте ASP.NET, над которым я работал, и это работает.

На самом деле, в какой-то момент у меня возникла проблема с моим кодом. Я не заметил его, пока не нашел более простую версию консольной программы и не увидел, что она работает (никаких изменений на стороне Gmail, как вы беспокоитесь). Приведенный ниже код работает так же, как примеры, на которые вы ссылались:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Net;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new SmtpClient("smtp.gmail.com", 587)
            {
                Credentials = new NetworkCredential("myusername@gmail.com", "mypwd"),
                EnableSsl = true
            };
            client.Send("myusername@gmail.com", "myusername@gmail.com", "test", "testbody");
            Console.WriteLine("Sent");
            Console.ReadLine();
        }
    }
}

Я также получил его, используя комбинацию web.config, http://msdn.microsoft.com/en-us/library/w355a94k.aspx и кода (потому что EnableSslв файле конфигурации нет совпадений :().


1
У меня блестяще работало в приложении C # winforms. Спасибо, Фредди.
— Андрей

13
Просто помните, что такой код эффективно передает ваши учетные данные gmail в виде простого текста пользователю ...
— Крис Марисик,

3
на самом деле есть соответствующий параметр для enableSsl в web.config, см. ответ ниже
— Wiebe Tijsma

4
@Zidad, который был добавлен в 4.0.
— eglasius

21
Вам также может потребоваться включить доступ к «менее защищенным приложениям» на странице настроек Gmail: google.com/settings/security/lesssecureapps . Это необходимо, если вы получаете исключение "` Ответ сервера: 5.5.1 Требуется аутентификация.
— Равендаркский,

74

СЛЕДУЮЩАЯ ПОЧТИ ПОЧТИ БУДЕТ ОТВЕТИТЬ НА ВАШ ВОПРОС, ЕСЛИ ВСЕ ПРОЧЕЕ НЕ ПОЛУЧИЛОСЬ :

Я получил точно такую ​​же ошибку, оказалось, что новый алгоритм измерения надежности пароля Google изменил, посчитав мой текущий пароль слишком слабым, и не сказал мне ничего об этом (даже сообщение или предупреждение) ... Как я узнал об этом ? Ну, я решил изменить свой пароль, чтобы посмотреть, поможет ли он (пробовал все остальное безрезультатно), и когда я сменил пароль, это сработало!

Затем, для эксперимента, я попытался изменить свой пароль обратно на свой предыдущий пароль, чтобы посмотреть, что произойдет, и Gmail на самом деле не позволил мне сделать это, сославшись на причину: «Извините, мы не можем позволить вам сохранить это изменение в качестве выбранного пароль слишком слаб "и не позволил бы мне вернуться к моему старому паролю. Из этого я понял, что это ошибка, потому что либо а) вам нужно менять пароль один раз каждые x месяцев, либо б). как я уже говорил, их алгоритмы надежности паролей изменились, и поэтому слабый пароль, который я имел, не был принят, хотя они ничего не говорили об этом, когда пытались войти НИКОГДА! Это (номер 2) наиболее вероятный сценарий, поскольку моему слабому паролю было около 4 месяцев, и это позволило мне использовать его в Gmail.

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

Надеюсь, это поможет!


2
Спасибо, как вы говорите, смените пароль, чтобы он был надежным и все работало нормально.
— Гэвин

1
Это была именно моя проблема - все другие предложения были о конфигурации, но моя конфигурация была правильной с самого начала, но я продолжал получать ошибку. Смена пароля имела огромное значение,
— Андре Вермёлен

Спасибо, наконец-то я смог разобраться с этой проблемой, мой случай был на самом деле еще более сложным, я смог отправлять электронные письма с моей машины разработчика (которая находится в Грузии, на Кавказе), но электронные письма не работали с производственных серверов (Великобритания) После Смена пароля на сложный - теперь все работает :)
— Кирилл Чилингарашвили

Спасибо. У меня была та же проблема с моей учетной записью Gmail, у которой не было надежности пароля. Я обновил его с сильным, и мои коды работают.
— Thomas.Benz

Спасибо, да, наконец, это просто изменить пароль на надежный.
— Миша Бескин

68

В дополнение к другим шагам по устранению неполадок, приведенным выше, я также хотел бы добавить, что если вы включили двухфакторную аутентификацию (также называемую двухэтапной проверкой ) в своей учетной записи GMail, вы должны сгенерировать пароль для конкретного приложения и использовать его заново. сгенерированный пароль для аутентификации через SMTP .

Чтобы создать его, перейдите на страницу https://www.google.com/settings/ и выберите Авторизация приложений и сайтов для генерации пароля.


1
У меня не была включена двухэтапная проверка, и не имело значения, насколько надежно я сделал пароль, это был единственный способ решить мою проблему. Я мог использовать другие учетные записи Gmail без двухэтапных и более слабых паролей без каких-либо проблем ... чтобы использовать ту учетную запись, которую я действительно хотел использовать, мне пришлось включить двухэтапный и использовать специальный пароль приложения.
— Ян Робертсон

Именно то, что я делаю, но все еще та же ошибка: - / Он действует так, будто мой пароль недостаточно силен, но я использую пароль приложения, который мне дал Gmail !!!
— Джерри Додж

55
Turn On Access For Less Secure Apps and it will work for all no need to change password.

Ссылка на настройки Gmail

введите описание изображения здесь


1
Это сработало для меня. Более того, когда я попытался отправить электронное письмо вышеуказанным способом, я получил письмо от Google, где они прямо сказали, что заблокировали эту попытку из менее безопасного приложения, и упомянули этот способ ее исправить
— Demarsch

1
Это самый важный ключ в головоломке, так как у меня были настроены все остальные настройки, и казалось, что они не работают. Как только у меня была эта настройка, она работала как шарм.
— Потерян

1
Это сработало для меня. Пароль приложения + SSL + NetworkCredentials. (VB.NET)
— CrazyIvan1974

30

У меня были некоторые проблемы с отправкой электронных писем с моей учетной записи Gmail, что было связано с несколькими из вышеупомянутых ситуаций. Вот краткое изложение того, как я получил это, и в то же время сохраняя его гибким:

  • Прежде всего настройте учетную запись GMail:
    • Включите IMAP и подтвердите правильное максимальное количество сообщений (вы можете сделать это здесь)
    • Убедитесь, что ваш пароль не менее 7 символов и является надежным (согласно Google)
    • Убедитесь, что вам не нужно вводить код с картинки. Вы можете сделать это, отправив тестовое электронное письмо из браузера.
  • Внесите изменения в web.config (или app.config, я еще не пробовал, но я предполагаю, что так же легко заставить его работать в приложении для Windows):
<configuration>
    <appSettings>
        <add key="EnableSSLOnMail" value="True"/>   
    </appSettings>

    <!-- other settings --> 

    ...

    <!-- system.net settings -->
    <system.net>
        <mailSettings>
            <smtp from="yourusername@gmail.com" deliveryMethod="Network">
                <network 
                    defaultCredentials="false" 
                    host="smtp.gmail.com" 
                    port="587" 
                    password="stR0ngPassW0rd" 
                    userName="yourusername@gmail.com"
                    />
                <!-- When using .Net 4.0 (or later) add attribute: enableSsl="true" and you're all set-->
            </smtp>
        </mailSettings>
    </system.net>
</configuration>
Add a Class to your project:

Imports System.Net.Mail

Public Class SSLMail

    Public Shared Sub SendMail(ByVal e As System.Web.UI.WebControls.MailMessageEventArgs)

        GetSmtpClient.Send(e.Message)

        'Since the message is sent here, set cancel=true so the original SmtpClient will not try to send the message too:
        e.Cancel = True

    End Sub

    Public Shared Sub SendMail(ByVal Msg As MailMessage)
        GetSmtpClient.Send(Msg)
    End Sub

    Public Shared Function GetSmtpClient() As SmtpClient

        Dim smtp As New Net.Mail.SmtpClient
        'Read EnableSSL setting from web.config
        smtp.EnableSsl = CBool(ConfigurationManager.AppSettings("EnableSSLOnMail"))
        Return smtp
    End Function

End Class

И теперь, когда вы хотите отправить электронное письмо, все, что вам нужно сделать, это позвонить SSLMail.SendMail:

например, на странице с элементом управления PasswordRecovery:

Partial Class RecoverPassword
Inherits System.Web.UI.Page

Protected Sub RecoverPwd_SendingMail(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.MailMessageEventArgs) Handles RecoverPwd.SendingMail
    e.Message.Bcc.Add("webmaster@example.com")
    SSLMail.SendMail(e)
End Sub

End Class

Или в любом месте вашего кода вы можете позвонить:

SSLMail.SendMail(New system.Net.Mail.MailMessage("from@from.com","to@to.com", "Subject", "Body"})

Надеюсь, это поможет любому, кто сталкивается с этим постом! (Я использовал VB.NET, но я думаю, что легко преобразовать его в любой язык .NET.)


+1 "enableSsl =" true "- это работает для устаревшего приложения, которое специально не устанавливает свойство Smtp.enableSsl без перекомпиляции сборок. Отличный совет!
— Metro Smurf

и не забывайте брандмауэр. Порт 587 не является обычным портом для открытия.
— Гай Лоу

13
Dim SMTPClientObj As New Net.Mail.SmtpClient
SMTPClientObj.UseDefaultCredentials = False
SMTPClientObj.Credentials = New System.Net.NetworkCredential("myusername@gmail.com", "mypwd")
SMTPClientObj.Host = "smtp.gmail.com"
SMTPClientObj.Port = 587
SMTPClientObj.EnableSsl = True
SMTPClientObj.Send("myusername@gmail.com","yourusername@gmail.com","test","testbody")

Если вы получаете сообщение об ошибке типа «SMTP-сервер требует безопасного соединения или клиент не прошел проверку подлинности. Ответ сервера был: 5.5.1 Требуется проверка подлинности. Узнайте больше на», как я получал до этого, убедитесь, что строка SMTPClientObj.UseDefaultCredentials = Falseвключена и эта строка должен доSMTPClientObj.Credentials .

Я попытался переключить эти две строки противоположным образом, и вернулась ошибка 5.5.1 Authentication Required .


Это именно то, что случилось со мной. Кто думал, что порядок установки свойства будет исправлять / разрушать вещи!
— Билл Ян

Это было проблемой и для меня, я сменил порядок в соответствии с предложением, и он отлично работает - головные боли, тьфу!
— eth0

13

Ох ... Это удивительно ... Сначала я не мог отправить электронное письмо по каким-либо причинам. Но после того, как я изменил последовательность этих двух строк, как показано ниже, она работает отлично.

//(1)
client.UseDefaultCredentials = true;
//(2)
client.Credentials = new System.Net.NetworkCredential("username@gmail.com", "password");

Надеюсь, это поможет! :)


1
Да, порядок имеет значение. Особенно, когда вы устанавливаете свойство Credentials и не хотите использовать учетные данные по умолчанию.
— Стефан Цветановский,

1
Согласно документации, для использования учетных данных необходимо установить UseDefaultCredentials = false. Однако эти два параметра кажутся тайно взаимосвязанными. Если вы установите для UseDefaultCredentials значение true или false, это будет иметь побочный эффект от установки учетных данных на ноль. И кажется, что установка учетных данных может побочным эффектом установить UseDefaultCredentials = false. Хотя не указано, что это может быть ошибкой или просто неудачником.
— Аарон

10

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

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

То, что я сделал в моей нынешней системе, это отправка с задержкой в ​​1,5 секунды между каждым сообщением. Затем, если я получу какие-либо ошибки, остановитесь на 5 минут, а затем начните снова. Обычно это работает и позволяет вам отправлять аккаунты до предела (в последний раз я проверял, что это было 2000 для первичных входов клиентов в день).


1
Это была именно моя проблема! Когда я развернулся в Production, у меня возникла проблема, и после того, как я вошел в Gmail на самом сервере, он снова начал работать.
— ThisGuy


9

У меня была та же проблема, но оказалось, что моя антивирусная защита блокировала исходящую «спам» электронную почту. Отключение позволило мне использовать порт 587 для отправки электронной почты SMTP через GMail


Я отключил Защитник Windows, и он тоже начал работать.
— MorioBoncz

9

Если для вас здесь ничего не работает, вам может потребоваться разрешить доступ к вашей учетной записи Gmail из сторонних приложений. Это была моя проблема. Чтобы разрешить доступ, сделайте следующее:

  1. Войдите в свой аккаунт Gmail.
  2. Посетите эту страницу https://accounts.google.com/DisplayUnlockCaptcha и нажмите кнопку, чтобы разрешить доступ.
  3. Посетите эту страницу https://www.google.com/settings/security/lesssecureapps и включите доступ для менее безопасных приложений.

Это сработало для меня, надеюсь, что это работает для кого-то еще!


8

Я не уверен, какая версия .NET требуется для этого, потому что eglasius упомянул, что нет соответствующей enableSslнастройки (я использую .NET 4.0, но я подозреваю, что она работает в .NET 2.0 или более поздней версии), но эта конфигурация оправдана я (и не требует использования какой-либо программной конфигурации):

<system.net>
  <mailSettings>
    <smtp from="myusername@gmail.com" deliveryMethod="Network">
      <network defaultCredentials="false" enableSsl="true" host="smtp.gmail.com" port="587" password="password" userName="myusername@gmail.com"/>
    </smtp>
  </mailSettings>
</system.net>

Возможно, вам придется сначала включить POP или IMAP в своей учетной записи Gmail: https://mail.google.com/mail/?shva=1#settings/fwdandpop

Я рекомендую сначала попробовать это с обычным почтовым клиентом ...


2
это новинка для 4.0, сравните версии на -> msdn.microsoft.com/en-us/library/ms164242(v=VS.90).aspx
— eglasius

Привет, Эгласиус ... Хорошо, спасибо за это! Странно, они имеют только программный подход в до-4.0. Я думаю, мы все время от времени забываем обо всем :)
— Wiebe Tijsma

6

@Andres Pompiglio: Да, верно, вы должны изменить свой пароль хотя бы один раз ... эти коды работают просто отлично:

//Satrt Send Email Function
public string SendMail(string toList, string from, string ccList,
    string subject, string body)
{

    MailMessage message = new MailMessage();
    SmtpClient smtpClient = new SmtpClient();
    string msg = string.Empty;
    try
    {
        MailAddress fromAddress = new MailAddress(from);
        message.From = fromAddress;
        message.To.Add(toList);
        if (ccList != null && ccList != string.Empty)
            message.CC.Add(ccList);
        message.Subject = subject;
        message.IsBodyHtml = true;
        message.Body = body;
        // We use gmail as our smtp client
        smtpClient.Host = "smtp.gmail.com";   
        smtpClient.Port = 587;
        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = new System.Net.NetworkCredential(
            "Your Gmail User Name", "Your Gmail Password");

        smtpClient.Send(message);
        msg = "Successful<BR>";
    }
    catch (Exception ex)
    {
        msg = ex.Message;
    }
    return msg;
}
//End Send Email Function

И вы можете сделать вызов функции, используя:

Response.Write(SendMail(recipient Address, "UserName@gmail.com", "ccList if any", "subject", "body"))

SMTP-сервер требует безопасного соединения, или клиент не был аутентифицирован. Ответ сервера: 5.5.1 Требуется аутентификация. Узнайте больше на
— Savas Adar

6

Я использовал корпоративное VPN-соединение. Это была причина, почему я не мог отправить электронное письмо из своего заявления. Это работает, если я отключаюсь от VPN.


5

Я также обнаружил, что аккаунт, который я использовал для входа, был деактивирован Google по какой-то причине. После того, как я сбросил свой пароль (на тот же, что и раньше), я смог нормально отправлять электронные письма. Я получаю сообщение 5.5.1 также.


5

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

host = smtp.gmail.com
port = 587
username = email@gmail.com
password = password
enabledssl = true

с параметрами smtpclient выше работают в gmail


5

Я получил ту же ошибку, и ни одно из вышеперечисленных решений не помогло.

Моя проблема заключалась в том, что я запускал код с удаленного сервера, который никогда не использовался для входа в учетную запись gmail.

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



4

Я столкнулся с этой же ошибкой ( «SMTP-серверу требуется защищенное соединение, или клиент не был аутентифицирован. Ответ сервера был: 5.5.1 Требуется аутентификация. Подробнее на» ) и обнаружил, что я использовал неправильный пароль. Я установил учетные данные, и они были отправлены правильно.

Я знаю, что уже поздно, но, возможно, это поможет кому-то еще.


4

Еще одна вещь, которую я нашел, это то, что вы должны изменить свой пароль хотя бы один раз. И попробуйте использовать пароль безопасного уровня (не используйте того же пользователя, что и пароль, 123456 и т. Д.)


4

Еще одно возможное решение для вас. У меня были похожие проблемы с подключением к Gmail через IMAP. Попробовав все решения, с которыми я столкнулся, о которых вы и здесь и в других местах узнаете в SO (например, включите IMAP, включите менее безопасный доступ к своей почте, используя https://accounts.google.com/b/0/displayunlockcaptcha и и так далее), я фактически создал новую учетную запись Gmail еще раз.

В моем первоначальном тесте, первая созданная мной учетная запись Gmail, я подключился к моей основной учетной записи Gmail. Это приводило к ошибочному поведению, когда Google ссылался на неправильный аккаунт. Например, запуск https://accounts.google.com/b/0/displayunlockcaptcha открыл мой основной аккаунт, а не тот, который я создал для этой цели.

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

Я еще не подтвердил это (т.е. воспроизвел), но он, очевидно, сделал это для меня ... надеюсь, это поможет.


4
  1. Сначала проверьте настройки учетной записи Gmail и включите «Доступ к менее защищенным приложениям». введите описание изображения здесь

Мы настоятельно рекомендуем вам использовать безопасное приложение, такое как Gmail, для доступа к своей учетной записи. Все приложения, созданные Google, соответствуют этим стандартам безопасности. Использование менее защищенного приложения, с другой стороны, может сделать вашу учетную запись уязвимой. Выучить больше.

  1. Устанавливать

    smtp.UseDefaultCredentials = false;

    перед

    smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);

4

Есть одна или несколько причин для этой ошибки.

  • Войдите в свой Gmail (или любой другой, если) в вашей локальной системе.

  • Также проверьте менее безопасное приложение и установите для него значение «Включить», вот ссылка для GMAIL. https://www.google.com/settings/security/lesssecureapps

  • проверьте наличие EnableSsl в своем коде электронной почты, а также установите для него значение true.

    smtp.EnableSsl = true;
  • Также проверьте, какой порт вы используете в настоящее время. 25 - Глобальный, но вы можете проверить это и для других, например 587. проверьте здесь. Все ли SMTP-коммуникации происходят за 25?

  • ЕСЛИ ВЫ УДАЛЕНЫ : проверьте ответ Влада Тамаса выше.


Что если я не хочу включать менее безопасные настройки приложения, как другие почтовые клиенты делают это, почему я не могу сделать то же самое с c #?
— user734028

3

Вы также можете подключиться через порт 465, но из-за некоторых ограничений пространства имен System.Net.Mail вам, возможно, придется изменить свой код. Это связано с тем, что пространство имен не позволяет создавать неявные SSL-соединения. Это обсуждается на http://blogs.msdn.com/b/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx , и я предоставили пример использования CDO (Collaborative Data Object) в другом обсуждении ( SMTP GMail через ошибки C # .Net на всех портах ).


3

Я решил эту проблему. По-видимому, это сообщение используется в нескольких типах ошибок. Моя проблема заключалась в том, что я набрал максимум 500 отправленных писем.

Войдите в учетную запись и вручную попробуйте отправить письмо. Если лимит был достигнут, он сообщит вам


2

Если у вас есть двухэтапная проверка в учетной записи Gmail, вам нужно будет сгенерировать пароль для приложения. https://support.google.com/accounts/answer/185833?p=app_passwords_sa&hl=en&visit_id=636903322072234863-1319515789&rd=1 Выберите Как создать пароль приложения и следуйте приведенным инструкциям. Скопируйте и вставьте сгенерированный пароль приложения куда-нибудь, так как вы не сможете восстановить его после нажатия кнопки Готово.


2
smtp.Host = "smtp.gmail.com"; //host name
smtp.Port = 587; //port number
smtp.EnableSsl = true; //whether your smtp server requires SSL
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.Timeout = 20000;

1

Измените свой пароль Gmail и попробуйте еще раз, после этого он должен работать.

Не знаю почему, но каждый раз, когда вы меняете хостинг, вы должны сменить пароль.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.