Отправить письмо через C# через аккаунт Google Apps
У меня есть стандартная учетная запись Google Apps. Я настроил пользовательский домен через Google Apps. Я могу отправлять и получать электронные письма успешно через приложения Google, когда я использую интерфейс Gmail. Тем не менее, я хочу отправить электронное письмо с помощью кода. Чтобы попытаться это сделать, я пробовал следующий код:
MailMessage mailMessage = new MailMessage();
mailMessage.To.Add("someone@somewhere.com");
mailMessage.Subject = "Test";
mailMessage.Body = "<html><body>This is a test</body></html>";
mailMessage.IsBodyHtml = true;
// Create the credentials to login to the gmail account associated with my custom domain
string sendEmailsFrom = "emailAddress@mydomain.com";
string sendEmailsFromPassword = "password";
NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword);
SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);
mailClient.EnableSsl = true;
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailClient.UseDefaultCredentials = false;
mailClient.Timeout = 20000;
mailClient.Credentials = cred;
mailClient.Send(mailMessage);
при достижении метода Send возникает исключение, которое гласит:
"SMTP-сервер требует защищенного подключение или клиент не было опознанный. Ответ сервера было: 5.5.1 требуется аутентификация."
Как отправить почту через мой пользовательский домен через Google?
спасибо!
5 ответов:
нет необходимости жестко кодировать все настройки smtp в коде. Положите их в паутину.конфиг вместо этого. Таким образом, вы можете зашифровать эти параметры, если это необходимо, и изменить их на лету без перекомпиляции приложения.
<configuration> <system.net> <mailSettings> <smtp from="example@domain.com" deliveryMethod="Network"> <network host="smtp.gmail.com" port="587" userName="example@domain.com" password="password"/> </smtp> </mailSettings> </system.net> </configuration>
конец при отправке электронной почты просто включите SSL на вашем SmtpClient:
var message = new MailMessage("navin@php.net"); // here is an important part: message.From = new MailAddress("example@domain.com", "Mailer"); // it's superfluous part here since from address is defined in .config file // in my example. But since you don't use .config file, you will need it. var client = new SmtpClient(); client.EnableSsl = true; client.Send(message);
убедитесь, что вы отправляете письмо с того же адреса электронной почты, с которым вы пытаетесь аутентификация на Gmail.
Примечание: начиная с .NET 4.0 вы можете вставить enableSsl= "true" в web.config в отличие от установки его в коде.
Это то, что я использую в WPF 4
SmtpClient client = new SmtpClient(); client.Credentials = new NetworkCredential("sender_email@domain.tld", "P@$$w0rD"); client.Port = 587; client.Host = "smtp.gmail.com"; client.EnableSsl = true; try { MailAddress maFrom = new MailAddress("sender_email@domain.tld", "Sender's Name", Encoding.UTF8), maTo = new MailAddress("recipient_email@domain2.tld", "Recipient's Name", Encoding.UTF8); MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address); mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>"; mmsg.BodyEncoding = Encoding.UTF8; mmsg.IsBodyHtml = true; mmsg.Subject = "Some Other Text as Subject"; mmsg.SubjectEncoding = Encoding.UTF8; client.Send(mmsg); MessageBox.Show("Done"); } catch (Exception ex) { MessageBox.Show(ex.ToString(), ex.Message); //throw; }
следите за брандмауэрами и антивирусами. Эти жуткие вещи, как правило, блокируют приложения, отправляющие электронную почту. Я использую McAfee Enterprise, и мне нужно добавить имя исполняемого файла (например, Bazar.* для обоих базар.exe и Базар.vshost.exe), чтобы иметь возможность отправлять электронные письма...
там не нужно ничего делать. Просто войдите в свой текущий счет в первый раз и следуйте инструкциям.
ваша проблема будет решена. Это происходит потому, что вы создали учетную запись в Google Apps, но не войти. Просто войдите в систему, следуйте инструкциям и попробуйте.
мой код подключается к smtp.google.com использование TLS на Порту=587 (SSL должен быть портом 465), но все еще нуждается в EnableSsl=true
SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.EnableSsl = true; smtp.UseDefaultCredentials = false; NetworkCredential credentials = new NetworkCredential(); credentials.UserName = "INSERT EMAIL"; credentials.Password = "INSERT PASSWORD"; smtp.Credentials = credentials; MailAddress addressFrom = new MailAddress(credentials.UserName); MailAddress addressTo = new MailAddress("INSERT RECIPIENT"); MailMessage msg = new MailMessage(addressFrom, addressTo); msg.Subject = "SUBJECT" msg.Body = "BODY"; smtp.Send(msg);
обратите внимание на эти важные предпосылки в вашей учетной записи G SUITE
- убедитесь, что имя пользователя, которое вы используете, очистило тест проверки слова CAPTCHA, который появляется при первом входе в систему.
- убедитесь, что учетная запись имеет пароль - https://support.google.com/accounts/answer/32040
- убедитесь, что менее безопасные приложения включены для нужной учетной записи -https://support.google.com/a/answer/6260879