Zamiast polegać na tym, że mój host wysyła wiadomość e-mail, myślałem o wysyłaniu wiadomości e-mail za pomocą mojego konta Gmail . E-maile to spersonalizowane wiadomości e-mail do zespołów, w których gram w moim programie.
< systemnetmail.com > jest prawdopodobnie najbardziej absurdalnie kompletną witryną poświęconą pojedynczej przestrzeni nazw .NET ... ale ma WSZYSTKO, co możesz chcieć wiedzieć o wysyłaniu poczty za pośrednictwem platformy .NET, czy to ASP.NET czy Desktop. < systemwebmail.com > był oryginalnym adresem URL w poście, ale nie należy go używać w .NET 2.0 i nowszych wersjach .
Nadal możesz dostać się do niezalogowanych błędów, jeśli Google nagle zdecyduje, że wysłałeś zbyt wiele w ciągu ostatnich xx minut. Zawsze powinieneś dodać trySend, jeśli wystąpi błąd, a następnie spróbuj ponownie.
Jason Short,
72
Ciekawa uwaga: jeśli zamienisz „UseDefaultCredentials = false” i „Credentials = ...”, to nie zostanie uwierzytelnione.
Nathan Wheeler,
13
Nie ma problemów z SPF przy użyciu tej metody. Każdy klient poczty e-mail można skonfigurować tak, aby działał dokładnie tak. Mogą pojawić się problemy, jeśli użyjesz własnego serwera (tj. Czegoś innego niż smtp.gmail.com) [email protected]jako nadawcy. Btw: smtp.gmail.comautomatycznie zastępuje adres nadawcy, jeśli nie jest on twój.
Meinersbur
24
Trudno mi było pracować z tym, nawet próbując różnych poprawek. Jak zasugerowano w powiązanym poście, odkryłem, że to mój program antywirusowy uniemożliwiał pomyślne wysłanie wiadomości e-mail. Omawianym antywirusem jest McAffee, a jego „Ochrona dostępu” ma kategorię „Standardowa ochrona antywirusowa”, która ma zasadę „Zapobiegaj wysyłaniu wiadomości e-mail przez robaki masowo wysyłające”. Poprawienie / wyłączenie tej reguły sprawiło, że ten kod działa dla mnie!
yourbuddypal,
18
Otrzymywałem komunikat o błędzie Wymaganie uwierzytelnienia 5.5.1, dopóki nie zdałem sobie sprawy, że testuję konto (moje osobiste) z włączonym uwierzytelnianiem dwuskładnikowym. Kiedyś użyłem konta, które tego nie miało, działało dobrze. Mógłbym również wygenerować hasło do mojej aplikacji, z której testowałem w moim osobistym akcie, ale nie chciałem tego robić.
Nick DeVore,
153
Powyższa odpowiedź nie działa. Musisz ustawić DeliveryMethod = SmtpDeliveryMethod.Networklub wróci z błędem „ klient nie został uwierzytelniony ”. Poza tym zawsze dobrze jest ustawić limit czasu.
Zmieniony kod:
using System.Net.Mail;
using System.Net;var fromAddress =newMailAddress("[email protected]","From Name");var toAddress =newMailAddress("[email protected]","To Name");conststring fromPassword ="password";conststring subject ="test";conststring body ="Hey now!!";var smtp =newSmtpClient{Host="smtp.gmail.com",Port=587,EnableSsl=true,DeliveryMethod=SmtpDeliveryMethod.Network,Credentials=newNetworkCredential(fromAddress.Address, fromPassword),Timeout=20000};
using (var message =newMailMessage(fromAddress, toAddress){Subject= subject,Body= body}){
smtp.Send(message);}
Aby pozostałe odpowiedzi działały „z serwera” najpierw włącz dostęp dla mniej bezpiecznych aplikacji na koncie Gmail.
Wygląda na to, że ostatnio Google zmieniło swoją politykę bezpieczeństwa. Najwyżej oceniana odpowiedź nie działa, dopóki nie zmienisz ustawień konta zgodnie z opisem tutaj: https://support.google.com/accounts/answer/6010255?hl=pl
Od marca 2016 r. Google ponownie zmieniło lokalizację ustawienia!
@BCS Software, inmy program, użytkownik wstawia e-maile, których mój program musi użyć, aby wysłać wiadomość. Jak mogę sprawić, by użytkownik poczty e-mail mógł wysłać wiadomość e-mail, nawet jeśli włączone jest uwierzytelnianie dwuskładnikowe?
Alaa „
Jest to to samo ustawienie, które należy zmienić, jeśli chcesz używać klienta Microsoft Outlook (na komputerze stacjonarnym, telefonie komórkowym itp.) Do wysyłania / odbierania wiadomości e-mail za pośrednictwem Gmaila Google.
Brett Rigby
41
To jest, aby wysłać e-mail z załącznikiem. Prosty i krótki ..
Google może blokować próby logowania z niektórych aplikacji lub urządzeń, które nie stosują nowoczesnych standardów bezpieczeństwa. Ponieważ te aplikacje i urządzenia są łatwiejsze do włamania, zablokowanie ich pomaga utrzymać bezpieczeństwo konta.
Niektóre przykłady aplikacji, które nie obsługują najnowszych standardów bezpieczeństwa, obejmują:
Aplikacja Mail na iPhonie lub iPadzie z systemem iOS 6 lub starszym
Aplikacja Poczta na telefonie z systemem Windows wcześniejszym niż wersja 8.1
Niektóre klienty poczty Desktop, takie jak Microsoft Outlook i Mozilla Thunderbird
Dlatego musisz włączyć mniej bezpieczne logowanie na swoim koncie Google.
Aby go uruchomić, musiałem włączyć konto Gmail, aby inne aplikacje mogły uzyskać dostęp. Odbywa się to za pomocą „włączania mniej bezpiecznych aplikacji”, a także za pomocą tego linku:
https://accounts.google.com/b/0/DisplayUnlockCaptcha
using System;
using System.Net;
using System.Net.Mail;
namespace SendMailViaGmail{classProgram{staticvoidMain(string[] args){//Specify senders gmail addressstringSendersAddress="[email protected]";//Specify The Address You want to sent Email To(can be any valid email address)stringReceiversAddress="[email protected]";//Specify The password of gmial account u are using to sent mail(pw of [email protected])conststringSendersPassword="Password";//Write the subject of ur mailconststring subject ="Testing";//Write the contents of your mailconststring body ="Hi This Is my Mail From Gmail";try{//we will use Smtp client which allows us to send email using SMTP Protocol//i have specified the properties of SmtpClient smtp within{}//gmails smtp server name is smtp.gmail.com and port number is 587SmtpClient smtp =newSmtpClient{Host="smtp.gmail.com",Port=587,EnableSsl=true,DeliveryMethod=SmtpDeliveryMethod.Network,Credentials=newNetworkCredential(SendersAddress,SendersPassword),Timeout=3000};//MailMessage represents a mail message//it is 4 parameters(From,TO,subject,body)MailMessage message =newMailMessage(SendersAddress,ReceiversAddress, subject, body);/*WE use smtp sever we specified above to send the message(MailMessage message)*/
smtp.Send(message);Console.WriteLine("Message Sent Successfully");Console.ReadKey();}catch(Exception ex){Console.WriteLine(ex.Message);Console.ReadKey();}}}}
Chociaż Twój artykuł może w rzeczywistości odpowiedzieć na pytanie, lepiej byłoby zawrzeć w nim istotne części odpowiedzi i podać odnośnik. Przepełnienie stosu jest tak samo przydatne, jak jego pytania i odpowiedzi, a jeśli Twój blog prowadzi do awarii lub zmienia się adresy URL, ta odpowiedź staje się bezużyteczna. Dzięki!
sarnold
14
Mam nadzieję, że ten kod będzie działał dobrze. Możesz spróbować.
// Include this.
using System.Net.Mail;string fromAddress ="[email protected]";string mailPassword ="*****";// Mail id password from where mail will be sent.string messageBody ="Write the body of the message here.";// Create smtp connection.SmtpClient client =newSmtpClient();
client.Port=587;//outgoing port for the mail.
client.Host="smtp.gmail.com";
client.EnableSsl=true;
client.Timeout=10000;
client.DeliveryMethod=SmtpDeliveryMethod.Network;
client.UseDefaultCredentials=false;
client.Credentials=newSystem.Net.NetworkCredential(fromAddress, mailPassword);// Fill the mail form.var send_mail =newMailMessage();
send_mail.IsBodyHtml=true;//address from where mail will be sent.
send_mail.From=newMailAddress("[email protected]");//address to which mail will be sent.
send_mail.To.Add(newMailAddress("[email protected]");//subject of the mail.
send_mail.Subject="put any subject here";
send_mail.Body= messageBody;
client.Send(send_mail);
wiadomość send_mail = new MailMessage (); Jak ta linia ma działać? Nie można pośrednio przekonwertować „System.Net.Mail.MailMessage” na „System.Windows.Forms.Message”
privatevoid button1_Click(object sender,EventArgs e){try{MailMessage mail =newMailMessage();SmtpClientSmtpServer=newSmtpClient("smtp.gmail.com");
mail.From=newMailAddress("[email protected]");
mail.To.Add("to_address");
mail.Subject="Test Mail";
mail.Body="This is for testing SMTP mail from GMAIL";SmtpServer.Port=587;SmtpServer.Credentials=newSystem.Net.NetworkCredential("username","password");SmtpServer.EnableSsl=true;SmtpServer.Send(mail);MessageBox.Show("mail Send");}catch(Exception ex){MessageBox.Show(ex.ToString());}}
Aby uniknąć problemów związanych z bezpieczeństwem w Gmailu, należy najpierw wygenerować hasło do aplikacji w ustawieniach Gmaila i możesz użyć tego hasła zamiast prawdziwego hasła, aby wysłać wiadomość e-mail, nawet jeśli korzystasz z weryfikacji dwuetapowej.
Aby zapobiec fałszowaniu - Gmail / Outlook.com nie pozwala na wysyłanie z nazwy dowolnego konta użytkownika.
Jeśli masz ograniczoną liczbę nadawców, możesz postępować zgodnie z tymi instrukcjami, a następnie ustawić Frompole na ten adres: Wysyłanie poczty z innego adresu
Jeśli chcesz wysłać z dowolnego adresu e-mail (takiego jak formularz zwrotny na stronie internetowej, na której użytkownik wprowadza swój adres e-mail, a nie chcesz, aby wysyłał Ci bezpośrednio e-mailem), możesz:
Pozwoliłoby to po prostu nacisnąć „odpowiedz” na swoim koncie e-mail, aby odpowiedzieć fanowi zespołu na stronie z opiniami, ale nie otrzymaliby twojego prawdziwego e-maila, co prawdopodobnie doprowadziłoby do tony spamu.
Jeśli jesteś w kontrolowanym środowisku, działa to świetnie, ale pamiętaj, że widziałem niektórych klientów e-mail wysyłających na adres od, nawet gdy określono odpowiedź na (nie wiem, który).
Miałem ten sam problem, ale problem został rozwiązany, przechodząc do ustawień zabezpieczeń Gmaila i zezwalając na mniej bezpieczne aplikacje . Kod Domenic & Donny działa, ale tylko jeśli włączysz to ustawienie
Jeśli jesteś zalogowany (w Google), możesz skorzystać z tego linku i przełączyć „Włącz” na „Dostęp dla mniej bezpiecznych aplikacji”
using System;
using System.Net;
using System.Net.Mail;
namespace SendMailViaGmail{classProgram{staticvoidMain(string[] args){//Specify senders gmail addressstringSendersAddress="[email protected]";//Specify The Address You want to sent Email To(can be any valid email address)stringReceiversAddress="[email protected]";//Specify The password of gmial account u are using to sent mail(pw of [email protected])conststringSendersPassword="Password";//Write the subject of ur mailconststring subject ="Testing";//Write the contents of your mailconststring body ="Hi This Is my Mail From Gmail";try{//we will use Smtp client which allows us to send email using SMTP Protocol//i have specified the properties of SmtpClient smtp within{}//gmails smtp server name is smtp.gmail.com and port number is 587SmtpClient smtp =newSmtpClient{Host="smtp.gmail.com",Port=587,EnableSsl=true,DeliveryMethod=SmtpDeliveryMethod.Network,Credentials=newNetworkCredential(SendersAddress,SendersPassword),Timeout=3000};//MailMessage represents a mail message//it is 4 parameters(From,TO,subject,body)MailMessage message =newMailMessage(SendersAddress,ReceiversAddress, subject, body);/*WE use smtp sever we specified above to send the message(MailMessage message)*/
smtp.Send(message);Console.WriteLine("Message Sent Successfully");Console.ReadKey();}catch(Exception ex){Console.WriteLine(ex.Message);Console.ReadKey();}}}}
Kopiowanie z innej odpowiedzi , powyższe metody działają, ale Gmail zawsze zastępuje wiadomości e-mail „od” i „odpowiedz na” z faktycznym kontem wysyłającym Gmail. najwyraźniej istnieje jednak obejście:
Aktualizacja 3: Czytelnik Derek Bennett mówi: „Rozwiązaniem jest przejście do ustawień Gmaila: Konta i„ Ustaw jako domyślne ”konto inne niż konto Gmail. Spowoduje to, że Gmail ponownie przepisze pole Od niezależnie od adresu e-mail konta domyślnego adres to."
Można spróbować Mailkit. Zapewnia lepszą i zaawansowaną funkcjonalność wysyłania poczty. Możesz znaleźć więcej z tego Oto przykład
MimeMessage message =newMimeMessage();
message.From.Add(newMailboxAddress("FromName","[email protected]"));
message.To.Add(newMailboxAddress("ToName","[email protected]"));
message.Subject="MyEmailSubject";
message.Body=newTextPart("plain"){Text=@"MyEmailBodyOnlyTextPart"};
using (var client =newSmtpClient()){
client.Connect("SERVER",25);// 25 is port you can change accordingly// Note: since we don't have an OAuth2 token, disable// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");// Note: only needed if the SMTP server requires authentication
client.Authenticate("YOUR_USER_NAME","YOUR_PASSWORD");
client.Send(message);
client.Disconnect(true);}
Odpowiedzi:
Pamiętaj, aby użyć
System.Net.Mail
, a nie przestarzałeSystem.Web.Mail
. Robienie SSL zSystem.Web.Mail
jest ogromnym bałaganem hacky rozszerzeń.źródło
smtp.gmail.com
)[email protected]
jako nadawcy. Btw:smtp.gmail.com
automatycznie zastępuje adres nadawcy, jeśli nie jest on twój.Powyższa odpowiedź nie działa. Musisz ustawić
DeliveryMethod = SmtpDeliveryMethod.Network
lub wróci z błędem „ klient nie został uwierzytelniony ”. Poza tym zawsze dobrze jest ustawić limit czasu.Zmieniony kod:
źródło
Aby pozostałe odpowiedzi działały „z serwera” najpierw włącz dostęp dla mniej bezpiecznych aplikacji na koncie Gmail.
Wygląda na to, że ostatnio Google zmieniło swoją politykę bezpieczeństwa. Najwyżej oceniana odpowiedź nie działa, dopóki nie zmienisz ustawień konta zgodnie z opisem tutaj: https://support.google.com/accounts/answer/6010255?hl=pl
Od marca 2016 r. Google ponownie zmieniło lokalizację ustawienia!
źródło
To jest, aby wysłać e-mail z załącznikiem. Prosty i krótki ..
źródło: http://coding-issues.blogspot.in/2012/11/sending-email-with-attachments-from-c.html
źródło
Google może blokować próby logowania z niektórych aplikacji lub urządzeń, które nie stosują nowoczesnych standardów bezpieczeństwa. Ponieważ te aplikacje i urządzenia są łatwiejsze do włamania, zablokowanie ich pomaga utrzymać bezpieczeństwo konta.
Niektóre przykłady aplikacji, które nie obsługują najnowszych standardów bezpieczeństwa, obejmują:
Dlatego musisz włączyć mniej bezpieczne logowanie na swoim koncie Google.
Po zalogowaniu się na konto Google przejdź do:
https://myaccount.google.com/lesssecureapps
lub
https://www.google.com/settings/security/lesssecureapps
W języku C # możesz użyć następującego kodu:
źródło
Aby go uruchomić, musiałem włączyć konto Gmail, aby inne aplikacje mogły uzyskać dostęp. Odbywa się to za pomocą „włączania mniej bezpiecznych aplikacji”, a także za pomocą tego linku: https://accounts.google.com/b/0/DisplayUnlockCaptcha
źródło
Oto moja wersja: „ Wyślij e-mail w C # za pomocą Gmaila ”.
źródło
Mam nadzieję, że ten kod będzie działał dobrze. Możesz spróbować.
źródło
Uwzględnij to,
I wtedy,
źródło
Źródło : Wyślij e-mail w ASP.NET C #
Poniżej znajduje się przykładowy działający kod do wysyłania poczty za pomocą C #, w poniższym przykładzie korzystam z serwera smtp Google.
Kod jest dość oczywisty, zastąp adres e-mail i hasło wartościami adresu e-mail i hasła.
źródło
Jeśli chcesz wysłać e-mail w tle, wykonaj następujące czynności
i dodaj przestrzeń nazw
źródło
Jedna wskazówka! Sprawdź skrzynkę odbiorczą nadawcy, być może potrzebujesz mniej bezpiecznych aplikacji. Zobacz: https://www.google.com/settings/security/lesssecureapps
źródło
Spróbuj tego,
źródło
użyj tego sposobu
Nie zapomnij tego:
źródło
Aby uniknąć problemów związanych z bezpieczeństwem w Gmailu, należy najpierw wygenerować hasło do aplikacji w ustawieniach Gmaila i możesz użyć tego hasła zamiast prawdziwego hasła, aby wysłać wiadomość e-mail, nawet jeśli korzystasz z weryfikacji dwuetapowej.
źródło
Zmiana nadawcy w e-mailu Gmail / Outlook.com:
Aby zapobiec fałszowaniu - Gmail / Outlook.com nie pozwala na wysyłanie z nazwy dowolnego konta użytkownika.
Jeśli masz ograniczoną liczbę nadawców, możesz postępować zgodnie z tymi instrukcjami, a następnie ustawić
From
pole na ten adres: Wysyłanie poczty z innego adresuJeśli chcesz wysłać z dowolnego adresu e-mail (takiego jak formularz zwrotny na stronie internetowej, na której użytkownik wprowadza swój adres e-mail, a nie chcesz, aby wysyłał Ci bezpośrednio e-mailem), możesz:
Pozwoliłoby to po prostu nacisnąć „odpowiedz” na swoim koncie e-mail, aby odpowiedzieć fanowi zespołu na stronie z opiniami, ale nie otrzymaliby twojego prawdziwego e-maila, co prawdopodobnie doprowadziłoby do tony spamu.
Jeśli jesteś w kontrolowanym środowisku, działa to świetnie, ale pamiętaj, że widziałem niektórych klientów e-mail wysyłających na adres od, nawet gdy określono odpowiedź na (nie wiem, który).
źródło
Miałem ten sam problem, ale problem został rozwiązany, przechodząc do ustawień zabezpieczeń Gmaila i zezwalając na mniej bezpieczne aplikacje . Kod Domenic & Donny działa, ale tylko jeśli włączysz to ustawienie
Jeśli jesteś zalogowany (w Google), możesz skorzystać z tego linku i przełączyć „Włącz” na „Dostęp dla mniej bezpiecznych aplikacji”
źródło
źródło
Oto jedna metoda wysyłania poczty i uzyskiwania poświadczeń z pliku web.config:
I odpowiednia sekcja w pliku web.config:
źródło
Spróbuj tego
źródło
Problemem było to, że moje hasło zawierało ukośnik „\” , który skopiowałem wklejając, nie wiedząc, że spowoduje to problemy.
źródło
Kopiowanie z innej odpowiedzi , powyższe metody działają, ale Gmail zawsze zastępuje wiadomości e-mail „od” i „odpowiedz na” z faktycznym kontem wysyłającym Gmail. najwyraźniej istnieje jednak obejście:
http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html
„3. Na karcie Konta kliknij link„ Dodaj kolejny adres e-mail, którego jesteś właścicielem ”, a następnie zweryfikuj go”
A może to
Aktualizacja 3: Czytelnik Derek Bennett mówi: „Rozwiązaniem jest przejście do ustawień Gmaila: Konta i„ Ustaw jako domyślne ”konto inne niż konto Gmail. Spowoduje to, że Gmail ponownie przepisze pole Od niezależnie od adresu e-mail konta domyślnego adres to."
źródło
Można spróbować
Mailkit
. Zapewnia lepszą i zaawansowaną funkcjonalność wysyłania poczty. Możesz znaleźć więcej z tego Oto przykładźródło