Отправить электронную почту через С# через аккаунт Google Apps
У меня есть стандартная учетная запись Google Apps. Я установил собственный домен через Google Apps. Я могу отправлять и получать электронные письма через Google Apps, когда я использую интерфейс Gmail. Однако я хочу отправить электронное письмо по коду. Чтобы попробовать это, я пытаюсь выполнить следующий код:
MailMessage mailMessage = new MailMessage();
mailMessage.To.Add("[email protected]");
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 = "[email protected]";
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);
Когда метод отправки достигнут, генерируется Исключение, которое гласит:
"Для SMTP-сервера требуется безопасный соединение или клиент не был проверку подлинности. Ответ сервера было: 5.5.1 Требуется аутентификация."
Как отправить электронную почту через свой пользовательский домен через Google?
Спасибо!
Ответы
Ответ 1
Нет необходимости жестко кодировать все параметры smtp в вашем коде. Вместо этого поместите их в web.config. Таким образом, вы можете зашифровать эти параметры, если это необходимо, и изменить их на лету без перекомпиляции вашего приложения.
<configuration>
<system.net>
<mailSettings>
<smtp from="[email protected]" deliveryMethod="Network">
<network host="smtp.gmail.com" port="587"
userName="[email protected]" password="password"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
Закончить, когда вы отправляете электронное сообщение, просто включите SSL на вашем SmtpClient:
var message = new MailMessage("[email protected]");
// here is an important part:
message.From = new MailAddress("[email protected]", "Mailer");
// it 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, а не устанавливать его в код.
Ответ 2
Это то, что я использую в WPF 4
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("[email protected]", "[email protected]$$w0rD");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
try {
MailAddress
maFrom = new MailAddress("[email protected]", "Sender Name", Encoding.UTF8),
maTo = new MailAddress("[email protected]", "Recipient 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. * Для Bazar.exe и Bazar.vshost.exe), чтобы отправлять электронные письма...
Ответ 3
измените порт на 465
Ответ 4
Не нужно ничего делать. Просто войдите в свою текущую учетную запись в первый раз и следуйте инструкциям.
Ваша проблема будет решена. Это происходит потому, что вы создали учетную запись в приложениях Google, но не вошли в систему. Просто войдите и следуйте инструкциям и попробуйте.
Ответ 5
Мой код подключается к 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