Wyślij e-mail przez C# poprzez konto Google Apps
Mam standardowe konto Google Apps. Skonfigurowałem niestandardową domenę za pośrednictwem Google Apps. Jestem w stanie wysyłać i odbierać wiadomości e-mail z powodzeniem za pośrednictwem Google Apps, gdy używam interfejsu Gmail. Chcę jednak wysłać e-mail kodem. Aby to zrobić, wypróbowałem następujący kod:
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);
Gdy zostanie osiągnięta metoda Send, zostanie wyrzucony wyjątek o następującej treści:
" serwer SMTP wymaga bezpiecznego połączenie lub klient nie był uwierzytelnione. Odpowiedź serwera było: 5.5.1 Wymagane uwierzytelnienie."
Jak mogę wysyłać e-maile za pośrednictwem mojej niestandardowej domeny przez Google?
Dzięki!5 answers
Nie ma potrzeby twardego kodowania wszystkich ustawień smtp w kodzie. Umieść je w sieci.zamiast tego config. W ten sposób możesz zaszyfrować te ustawienia w razie potrzeby i zmieniać je w locie bez ponownej kompilacji aplikacji.
<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>
Koniec po wysłaniu e-maila wystarczy włączyć SSL Na SmtpClient:
var message = new MailMessage("[email protected]");
// here is an important part:
message.From = new MailAddress("[email protected]", "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);
Upewnij się, że wysyłasz wiadomość e-mail z tego samego adresu e-mail, za pomocą którego próbujesz uwierzytelnić w Gmailu.
Uwaga: począwszy od. NET 4.0 można wstawić enableSsl = "true" do web.config w przeciwieństwie do ustawiania go w kodzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-15 15:32:37
Tego używam w WPF 4
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("[email protected]", "P@$$w0rD");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
try {
MailAddress
maFrom = new MailAddress("[email protected]", "Sender's Name", Encoding.UTF8),
maTo = new MailAddress("[email protected]", "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;
}
Uważaj na firewalle i antywirusy. Te straszne rzeczy mają tendencję do blokowania aplikacji wysyłających wiadomości e-mail. Używam McAfee Enterprise i muszę dodać nazwę pliku wykonywalnego (jak Bazar.* dla obu Bazar.exe i Bazar.vshost.exe), aby móc wysyłać e-maile...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-01 14:47:41
Zmień port na 465
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-12 17:04:10
Nie trzeba nic robić. Po prostu zaloguj się na swoje obecne konto za pierwszym razem i postępuj zgodnie z instrukcjami.
Twój problem się rozwiąże. Dzieje się tak, ponieważ utworzyłeś konto w google apps, ale nie zalogowałeś się. Po prostu zaloguj się i postępuj zgodnie z instrukcjami i spróbuj.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-20 07:47:56
Mój kod łączy się z smtp.google.com używanie TLS na Port=587 (SSL powinno być portem 465), ale nadal wymaga 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);
Zwróć uwagę na te ważne warunki wstępne na koncie G SUITE
- Upewnij się, że używana nazwa użytkownika została wyczyszczona przez test weryfikacji słowa CAPTCHA, który pojawia się podczas pierwszego logowania.
- Upewnij się, że konto ma bezpieczne hasło- https://support.google.com/accounts/answer/32040
- Upewnij się, że mniej bezpieczne aplikacje są włączone dla żądanego konta - https://support.google.com/a/answer/6260879
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-16 15:54:39