Au lieu de compter sur mon hôte pour envoyer un e-mail, je pensais envoyer les e-mails à l'aide de mon compte Gmail . Les courriels sont des courriels personnalisés aux groupes que je joue sur mon émission.
< systemnetmail.com > est probablement le site le plus complètement absurde dédié à un seul espace de noms .NET ... mais il contient TOUT ce que vous pourriez souhaiter savoir sur l'envoi de courrier via .NET, que ce soit ASP.NET ou Desktop. < systemwebmail.com > était l'URL d'origine dans la publication, mais ne doit pas être utilisée pour .NET 2.0 et supérieur.
Vous pouvez toujours obtenir des erreurs d'utilisateur non connecté si Google décide soudainement que vous en avez envoyé trop au cours des xx dernières minutes. Vous devez toujours ajouter un trySend, s'il se met en veille un moment, puis réessayer.
Jason Short
72
Remarque intéressante: si vous échangez «UseDefaultCredentials = false» et «Credentials = ...», il ne s'authentifiera pas.
Nathan Wheeler
13
Il n'y a aucun problème avec SPF en utilisant cette méthode. Chaque client de messagerie peut être configuré pour faire exactement cela. Vous pouvez simplement avoir des problèmes si vous utilisez votre propre serveur (c'est-à-dire autre chose que smtp.gmail.com) avec [email protected]comme expéditeur. Btw: smtp.gmail.comécrase automatiquement l'adresse de l'expéditeur si ce n'est pas la vôtre.
Meinersbur
24
J'avais du mal à faire fonctionner cela même en essayant divers réglages. Comme suggéré dans un article connexe, j'ai constaté que c'était mon antivirus qui empêchait l'envoi des e-mails avec succès. L'antivirus en question est McAffee, et sa «Protection d'accès» a une catégorie «Protection antivirus standard» qui a une règle «Empêcher les vers de publipostage de masse d'envoyer des e-mails». Ajuster / désactiver cette règle a fait fonctionner ce code pour moi!
yourbuddypal
18
J'obtenais le message d'erreur 5.5.1 Authentification requise jusqu'à ce que je réalise que je testais avec un compte (mon compte personnel) sur lequel l'authentification à deux facteurs était activée. Une fois que j'ai utilisé un compte qui n'en avait pas, cela a bien fonctionné. J'aurais également pu générer un mot de passe pour mon application à partir duquel je testais dans mon compte personnel, mais je ne voulais pas le faire.
Nick DeVore
153
La réponse ci-dessus ne fonctionne pas. Vous devez définir DeliveryMethod = SmtpDeliveryMethod.Networkou il reviendra avec une erreur "le client n'a pas été authentifié ". De plus, c'est toujours une bonne idée de mettre un temps mort.
Code révisé:
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);}
Intéressant; cela fonctionne sur ma machine (TM). Mais comme cela semble plausible, je vais l'ajouter à ma réponse.
Domenic
3
Hmm, je suppose que SmtpDeliveryMethod.Network est la valeur par défaut, mais peut-être que la valeur par défaut est modifiée lors de l'exécution dans IIS --- était-ce ce que vous faisiez?
Domenic
3
J'utilise le même code dans l'application Console, c'est par le biais de l'erreur «Échec de l'envoi du courrier».
Pour que les autres réponses fonctionnent "à partir d'un serveur", activez d' abord l' accès pour les applications moins sécurisées dans le compte gmail.
Il semble que Google ait récemment modifié sa politique de sécurité. La réponse la mieux notée ne fonctionne plus tant que vous n'avez pas modifié les paramètres de votre compte comme décrit ici: https://support.google.com/accounts/answer/6010255?hl=en-GB
Depuis mars 2016, google a de nouveau modifié l'emplacement du paramètre!
@BCS Software, dans mon programme, l'utilisateur insère tout e-mail que mon programme doit utiliser pour envoyer le message via. Alors, comment puis-je rendre l'utilisateur de messagerie capable d'envoyer l'e-mail même si l'authentification à 2 facteurs est activée?
Alaa
Il s'agit du même paramètre que vous devez modifier si vous souhaitez utiliser un client Microsoft Outlook (sur un ordinateur de bureau, un téléphone mobile, etc.) pour envoyer / recevoir des e-mails via le GMail de Google.
Brett Rigby
41
Il s'agit d'envoyer un e-mail avec pièce jointe .. Simple et court ..
Google peut bloquer les tentatives de connexion de certaines applications ou appareils qui n'utilisent pas les normes de sécurité modernes. Étant donné que ces applications et appareils sont plus faciles à pénétrer, leur blocage permet de sécuriser votre compte.
Voici quelques exemples d'applications qui ne prennent pas en charge les dernières normes de sécurité:
L'application Mail sur votre iPhone ou iPad avec iOS 6 ou inférieur
L'application Mail sur votre téléphone Windows précédant la version 8.1
Certains clients de messagerie de bureau comme Microsoft Outlook et Mozilla Thunderbird
Par conséquent, vous devez activer la connexion moins sécurisée dans votre compte Google.
Une fois connecté à votre compte Google, accédez à:
Pour que je puisse le faire fonctionner, j'ai dû activer mon compte gmail afin que d'autres applications puissent y accéder. Cela se fait avec "activer les applications moins sécurisées" et également en utilisant ce lien:
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();}}}}
Bien que votre article puisse en fait répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence. Stack Overflow n'est aussi utile que ses questions et réponses, et si votre hébergeur de blog tombe en panne ou que vos URL se déplacent, cette réponse devient inutile. Merci!
sarnold
14
J'espère que ce code fonctionnera bien. Tu peux essayer.
// 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);
message send_mail = new MailMessage (); Comment cette ligne devrait-elle fonctionner? Vous ne pouvez pas implicitement convertir 'System.Net.Mail.MailMessage' en 'System.Windows.Forms.Message'
Vous trouverez ci-dessous un exemple de code de travail pour l'envoi d'un courrier en utilisant C #, dans l'exemple ci-dessous, j'utilise le serveur smtp de google.
Le code est assez explicite, remplacez l'email et le mot de passe par vos valeurs d'email et de mot de passe.
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());}}
Pour éviter les problèmes de sécurité dans Gmail, vous devez d'abord générer un mot de passe d'application à partir de vos paramètres Gmail et vous pouvez utiliser ce mot de passe au lieu d'un vrai mot de passe pour envoyer un e-mail même si vous utilisez la vérification en deux étapes.
Si vous souhaitez envoyer à partir d'une adresse e-mail arbitraire (comme un formulaire de commentaires sur le site Web où l'utilisateur saisit son e-mail et que vous ne voulez pas qu'il vous envoie un e-mail directement), la meilleure chose à faire est la suivante:
Cela vous permettrait de simplement cliquer sur `` répondre '' dans votre compte de messagerie pour répondre au fan de votre groupe sur une page de commentaires, mais ils n'obtiendraient pas votre e-mail réel, ce qui entraînerait probablement une tonne de spam.
Si vous êtes dans un environnement contrôlé, cela fonctionne très bien, mais veuillez noter que j'ai vu certains clients de messagerie envoyer à l'adresse de même lorsque la réponse à est spécifiée (je ne sais pas laquelle).
J'ai eu le même problème, mais il a été résolu en accédant aux paramètres de sécurité de gmail et aux applications Allowing Less Secure . Le code de Domenic & Donny fonctionne, mais uniquement si vous avez activé ce paramètre
Si vous êtes connecté (à Google), vous pouvez suivre ce lien et basculer "Activer" pour "Accès aux applications moins sécurisées"
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();}}}}
En copiant à partir d' une autre réponse , les méthodes ci-dessus fonctionnent mais gmail remplace toujours l'email "de" et "répondre à" par le compte gmail d'envoi réel. apparemment, il y a un travail autour cependant:
Mise à jour 3: Reader Derek Bennett dit: "La solution consiste à aller dans vos paramètres gmail: Comptes et" Définir par défaut "un compte autre que votre compte gmail. Cela obligera gmail à réécrire le champ De avec quel que soit l'e-mail du compte par défaut L'adresse est."
Tu peux essayer Mailkit. Il vous offre de meilleures fonctionnalités avancées pour envoyer du courrier. Vous pouvez trouver plus de ceci Voici un exemple
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);}
Réponses:
Assurez-vous d'utiliser
System.Net.Mail
, pas le dépréciéSystem.Web.Mail
. Faire SSL avecSystem.Web.Mail
est un gros gâchis d'extensions hacky.la source
smtp.gmail.com
) avec[email protected]
comme expéditeur. Btw:smtp.gmail.com
écrase automatiquement l'adresse de l'expéditeur si ce n'est pas la vôtre.La réponse ci-dessus ne fonctionne pas. Vous devez définir
DeliveryMethod = SmtpDeliveryMethod.Network
ou il reviendra avec une erreur "le client n'a pas été authentifié ". De plus, c'est toujours une bonne idée de mettre un temps mort.Code révisé:
la source
Pour que les autres réponses fonctionnent "à partir d'un serveur", activez d' abord l' accès pour les applications moins sécurisées dans le compte gmail.
Il semble que Google ait récemment modifié sa politique de sécurité. La réponse la mieux notée ne fonctionne plus tant que vous n'avez pas modifié les paramètres de votre compte comme décrit ici: https://support.google.com/accounts/answer/6010255?hl=en-GB
Depuis mars 2016, google a de nouveau modifié l'emplacement du paramètre!
la source
Il s'agit d'envoyer un e-mail avec pièce jointe .. Simple et court ..
source: http://coding-issues.blogspot.in/2012/11/sending-email-with-attachments-from-c.html
la source
Google peut bloquer les tentatives de connexion de certaines applications ou appareils qui n'utilisent pas les normes de sécurité modernes. Étant donné que ces applications et appareils sont plus faciles à pénétrer, leur blocage permet de sécuriser votre compte.
Voici quelques exemples d'applications qui ne prennent pas en charge les dernières normes de sécurité:
Par conséquent, vous devez activer la connexion moins sécurisée dans votre compte Google.
Une fois connecté à votre compte Google, accédez à:
https://myaccount.google.com/lesssecureapps
ou
https://www.google.com/settings/security/lesssecureapps
En C #, vous pouvez utiliser le code suivant:
la source
Pour que je puisse le faire fonctionner, j'ai dû activer mon compte gmail afin que d'autres applications puissent y accéder. Cela se fait avec "activer les applications moins sécurisées" et également en utilisant ce lien: https://accounts.google.com/b/0/DisplayUnlockCaptcha
la source
Voici ma version: " Envoyer un e-mail en C # à l'aide de Gmail ".
la source
J'espère que ce code fonctionnera bien. Tu peux essayer.
la source
Incluez ceci,
Et alors,
la source
Source : Envoyer un e-mail en ASP.NET C #
Vous trouverez ci-dessous un exemple de code de travail pour l'envoi d'un courrier en utilisant C #, dans l'exemple ci-dessous, j'utilise le serveur smtp de google.
Le code est assez explicite, remplacez l'email et le mot de passe par vos valeurs d'email et de mot de passe.
la source
Si vous souhaitez envoyer un e-mail en arrière-plan, veuillez faire ce qui suit
et ajouter un espace de noms
la source
Un conseil! Vérifiez la boîte de réception de l'expéditeur, vous devrez peut-être autoriser des applications moins sécurisées. Voir: https://www.google.com/settings/security/lesssecureapps
la source
Essaye ça,
la source
utiliser de cette façon
N'oubliez pas ceci:
la source
Pour éviter les problèmes de sécurité dans Gmail, vous devez d'abord générer un mot de passe d'application à partir de vos paramètres Gmail et vous pouvez utiliser ce mot de passe au lieu d'un vrai mot de passe pour envoyer un e-mail même si vous utilisez la vérification en deux étapes.
la source
Changer d'expéditeur sur la messagerie Gmail / Outlook.com:
Pour empêcher l'usurpation d'identité - Gmail / Outlook.com ne vous permettra pas d'envoyer à partir d'un nom de compte d'utilisateur arbitraire.
Si vous avez un nombre limité d'expéditeurs, vous pouvez suivre ces instructions, puis définir le
From
champ à cette adresse: Envoi de courrier à partir d'une adresse différenteSi vous souhaitez envoyer à partir d'une adresse e-mail arbitraire (comme un formulaire de commentaires sur le site Web où l'utilisateur saisit son e-mail et que vous ne voulez pas qu'il vous envoie un e-mail directement), la meilleure chose à faire est la suivante:
Cela vous permettrait de simplement cliquer sur `` répondre '' dans votre compte de messagerie pour répondre au fan de votre groupe sur une page de commentaires, mais ils n'obtiendraient pas votre e-mail réel, ce qui entraînerait probablement une tonne de spam.
Si vous êtes dans un environnement contrôlé, cela fonctionne très bien, mais veuillez noter que j'ai vu certains clients de messagerie envoyer à l'adresse de même lorsque la réponse à est spécifiée (je ne sais pas laquelle).
la source
J'ai eu le même problème, mais il a été résolu en accédant aux paramètres de sécurité de gmail et aux applications Allowing Less Secure . Le code de Domenic & Donny fonctionne, mais uniquement si vous avez activé ce paramètre
Si vous êtes connecté (à Google), vous pouvez suivre ce lien et basculer "Activer" pour "Accès aux applications moins sécurisées"
la source
la source
Voici une méthode pour envoyer du courrier et obtenir des informations d'identification à partir de web.config:
Et la section correspondante dans web.config:
la source
Essaye celui-là
la source
Le problème pour moi était que mon mot de passe contenait une barre oblique "\" , que je copiais sans réaliser que cela causerait des problèmes.
la source
En copiant à partir d' une autre réponse , les méthodes ci-dessus fonctionnent mais gmail remplace toujours l'email "de" et "répondre à" par le compte gmail d'envoi réel. apparemment, il y a un travail autour cependant:
http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html
"3. Dans l'onglet Comptes, cliquez sur le lien" Ajoutez une autre adresse e-mail que vous possédez ", puis vérifiez-la"
Ou peut - être cela
Mise à jour 3: Reader Derek Bennett dit: "La solution consiste à aller dans vos paramètres gmail: Comptes et" Définir par défaut "un compte autre que votre compte gmail. Cela obligera gmail à réécrire le champ De avec quel que soit l'e-mail du compte par défaut L'adresse est."
la source
Tu peux essayer
Mailkit
. Il vous offre de meilleures fonctionnalités avancées pour envoyer du courrier. Vous pouvez trouver plus de ceci Voici un exemplela source