Question

Au lieu de compter sur mon hôte pour envoyer un email, je pensais envoyer les messages e-mail à l'aide de mon compte Gmail.Les e-mails sont des e-mails personnalisés pour les groupes que j'ai jouer sur mon spectacle.Est-il possible de le faire?

Était-ce utile?

La solution

Assurez-vous d'utiliser System.Net.Mail, pas le obsolète System.Web.Mail.Faire avec SSL System.Web.Mail est une grave désordre de hacky extensions.

using System.Net;
using System.Net.Mail;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@example.com", "To Name");
const string fromPassword = "fromPassword";
const string subject = "Subject";
const string body = "Body";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

Autres conseils

La réponse ci-dessus ne fonctionne pas.Vous devez définir DeliveryMethod = SmtpDeliveryMethod.Network ou il va revenir avec un "le client n'est pas authentifié"erreur.Aussi, il est toujours une bonne idée de mettre un timeout.

Code révisé:

using System.Net.Mail;
using System.Net;

var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@yahoo.com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";

var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
    Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    smtp.Send(message);
}

Pour les autres réponses à travailler "à partir d'un serveur" première Activer l'Accès pour les moins des applications sécurisées dans le compte gmail.

Ressemble à récemment, google a changé la politique de sécurité.Le top rated réponse ne fonctionne plus, jusqu'à ce que vous modifiez les paramètres de votre compte, comme décrit ici: https://support.google.com/accounts/answer/6010255?hl=en-GBenter image description here

enter image description here

En Mars 2016, google a changé le paramètre de nouveau!

C'est pour envoyer des e-mail avec la pièce jointe..Simple et court..

source: http://coding-issues.blogspot.in/2012/11/sending-email-with-attachments-from-c.html

using System.Net;
using System.Net.Mail;

public void email_send()
{
    MailMessage mail = new MailMessage();
    SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
    mail.From = new MailAddress("your mail@gmail.com");
    mail.To.Add("to_mail@gmail.com");
    mail.Subject = "Test Mail - 1";
    mail.Body = "mail with attachment";

    System.Net.Mail.Attachment attachment;
    attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
    mail.Attachments.Add(attachment);

    SmtpServer.Port = 587;
    SmtpServer.Credentials = new System.Net.NetworkCredential("your mail@gmail.com", "your password");
    SmtpServer.EnableSsl = true;

    SmtpServer.Send(mail);

}

Google peut bloquer le signe dans les tentatives de certaines applications ou périphériques qui ne sont pas à utiliser les normes de sécurité.Depuis ces applications et les appareils sont plus faciles à casser en les bloquant aide à protéger votre compte.

Quelques exemples d'applications qui ne prennent pas en charge les dernières normes de sécurité comprennent:

  • L'application de Messagerie sur votre iPhone ou iPad avec iOS 6 ou ci-dessous
  • L'application de Messagerie sur votre Windows phone 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 Moins Sûr De Connexion dans votre compte google.

Après l'inscription en 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:

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("email@gmail.com");
    mail.To.Add("somebody@domain.com");
    mail.Subject = "Hello World";
    mail.Body = "<h1>Hello</h1>";
    mail.IsBodyHtml = true;
    mail.Attachments.Add(new Attachment("C:\\file.zip"));

    using (SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587))
    {
        smtp.Credentials = new NetworkCredential("email@gmail.com", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
}

Voici ma version:"Envoyer Un Email En C # À L'Aide De Gmail".

using System;
using System.Net;
using System.Net.Mail;

namespace SendMailViaGmail
{
   class Program
   {
   static void Main(string[] args)
   {

      //Specify senders gmail address
      string SendersAddress = "Sendersaddress@gmail.com";
      //Specify The Address You want to sent Email To(can be any valid email address)
      string ReceiversAddress = "ReceiversAddress@yahoo.com";
      //Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
      const string SendersPassword = "Password";
      //Write the subject of ur mail
      const string subject = "Testing";
      //Write the contents of your mail
      const string 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 587
        SmtpClient smtp = new SmtpClient
        {
           Host = "smtp.gmail.com",
           Port = 587,
           EnableSsl = true,
           DeliveryMethod = SmtpDeliveryMethod.Network,
           Credentials    = new NetworkCredential(SendersAddress, SendersPassword),
           Timeout = 3000
        };

        //MailMessage represents a mail message
        //it is 4 parameters(From,TO,subject,body)

        MailMessage message = new MailMessage(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();
     }
    }
   }
 }

Pour moi pour le faire fonctionner, j'ai dû activer mon compte gmail, ce qui rend possible pour d'autres applications d'accéder.Cela se fait avec la "activer le moins sécurisé apps" et aussi en utilisant ce lien:https://accounts.google.com/b/0/DisplayUnlockCaptcha

J'espère que ce code fonctionne très bien.Vous pouvez avoir un essai.

// Include this.                
using System.Net.Mail;

string fromAddress = "xyz@gmail.com";
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 = new SmtpClient();
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 = new System.Net.NetworkCredential(fromAddress, mailPassword);


// Fill the mail form.
var send_mail = new MailMessage();

send_mail.IsBodyHtml = true;
//address from where mail will be sent.
send_mail.From = new MailAddress("from@gmail.com");
//address to which mail will be sent.           
send_mail.To.Add(new MailAddress("to@example.com");
//subject of the mail.
send_mail.Subject = "put any subject here";

send_mail.Body = messageBody;
client.Send(send_mail);

Inclure ce,

using System.Net.Mail;

Et puis,

MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body); 
SmtpClient client = new SmtpClient("smtp.gmail.com");

client.Port = Convert.ToInt16("587");
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","password");
client.EnableSsl = true;

client.Send(sendmsg);

Source : Envoyer un email à ASP.NET C#

Ci-dessous est un exemple de code qui fonctionne pour l'envoi d'un e-mail à l'aide de C#, dans l'exemple ci-dessous, je suis en utilisant google serveur smtp.

Le code est assez explicite, remplacer l'email et le mot de passe de votre e-mail et le mot de passe.

public void SendEmail(string address, string subject, string message)
{
    string email = "yrshaikh.mail@gmail.com";
    string password = "put-your-GMAIL-password-here";

    var loginInfo = new NetworkCredential(email, password);
    var msg = new MailMessage();
    var smtpClient = new SmtpClient("smtp.gmail.com", 587);

    msg.From = new MailAddress(email);
    msg.To.Add(new MailAddress(address));
    msg.Subject = subject;
    msg.Body = message;
    msg.IsBodyHtml = true;

    smtpClient.EnableSsl = true;
    smtpClient.UseDefaultCredentials = false;
    smtpClient.Credentials = loginInfo;
    smtpClient.Send(msg);
}

Si vous voulez envoyer de l'arrière-plan e-mail, puis s'il vous plaît ne le ci-dessous

 public void SendEmail(string address, string subject, string message)
 {
 Thread threadSendMails;
 threadSendMails = new Thread(delegate()
    {

      //Place your Code here 

     });
  threadSendMails.IsBackground = true;
  threadSendMails.Start();
}

et ajouter de l'espace de noms

using System.Threading;

utiliser de cette façon

MailMessage sendmsg = new MailMessage(SendersAddress, ReceiversAddress, subject, body); 
SmtpClient client = new SmtpClient("smtp.gmail.com");

client.Port = Convert.ToInt32("587");
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("mail-id@gmail.com","MyPassWord");
client.Send(sendmsg);

N'oubliez pas ceci :

using System.Net;
using System.Net.Mail;

Une Astuce!Vérifier l'expéditeur de la boîte de réception, vous devrez peut-être permettre de moins en moins des applications sécurisées.Voir: https://www.google.com/settings/security/lesssecureapps

Essayez Ceci,

    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");

            mail.From = new MailAddress("your_email_address@gmail.com");
            mail.To.Add("to_address");
            mail.Subject = "Test Mail";
            mail.Body = "This is for testing SMTP mail from GMAIL";

            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
            SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);
            MessageBox.Show("mail Send");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

Modification de l'expéditeur sur Gmail / Outlook.com e-mail:

Pour éviter l'usurpation de Gmail/Outlook.com ne pas permettre d'envoyer de l'arbitraire d'un nom de compte d'utilisateur.

Si vous avez un nombre limité d'expéditeurs que vous pouvez suivre ces instructions et ensuite définir la From terrain à cette adresse: L'envoi de mail depuis une adresse différente

Si vous êtes désireux d'envoyer à partir d'un arbitraire adresse de courrier électronique (comme un formulaire de rétroaction sur le site web où l'utilisateur entre son e-mail et vous ne voulez pas qu'ils vous envoyer un email directement) sur le meilleur que vous pouvez faire est ceci :

        msg.ReplyToList.Add(new System.Net.Mail.MailAddress(email, friendlyName));

Cela vous permettrait de cliquer sur "répondre" dans votre compte e-mail pour répondre à la fan de votre groupe sur une page de commentaires, mais ils ne seraient pas obtenir votre e-mail qui serait susceptible de conduire à une tonne de spam.

Si vous êtes dans un environnement contrôlé, et cela fonctionne très bien, mais s'il vous plaît noter que j'ai vu certains clients de messagerie envoyer à l'adresse de l'expéditeur, même lorsque la réponse est spécifié (je ne sais pas qui).

J'ai eu le même problème, mais il a été résolu en allant dans gmail les paramètres de sécurité et Ce qui diminue des applications Sécurisées.Le Code de Dominique & Donny fonctionne, mais seulement si vous avez activé ce paramètre

Si vous vous êtes inscrit (de Google), vous pouvez suivre cette lien et bascule "Allumer" pour "L'accès pour moins d'applications sécurisées"

using System;
using System.Net;
using System.Net.Mail;

namespace SendMailViaGmail
{
   class Program
   {
   static void Main(string[] args)
   {

      //Specify senders gmail address
      string SendersAddress = "Sendersaddress@gmail.com";
      //Specify The Address You want to sent Email To(can be any valid email address)
      string ReceiversAddress = "ReceiversAddress@yahoo.com";
      //Specify The password of gmial account u are using to sent mail(pw of sender@gmail.com)
      const string SendersPassword = "Password";
      //Write the subject of ur mail
      const string subject = "Testing";
      //Write the contents of your mail
      const string 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 587
        SmtpClient smtp = new SmtpClient
        {
           Host = "smtp.gmail.com",
           Port = 587,
           EnableSsl = true,
           DeliveryMethod = SmtpDeliveryMethod.Network,
           Credentials = new NetworkCredential(SendersAddress, SendersPassword),
           Timeout = 3000
        };

        //MailMessage represents a mail message
        //it is 4 parameters(From,TO,subject,body)

        MailMessage message = new MailMessage(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();
     }
}
}
}

Voici une méthode pour envoyer des messages et d'obtenir des informations d'identification à partir du web.config:

public static string SendEmail(string To, string Subject, string Msg, bool bodyHtml = false, bool test = false, Stream AttachmentStream = null, string AttachmentType = null, string AttachmentFileName = null)
{
    try
    {
        System.Net.Mail.MailMessage newMsg = new System.Net.Mail.MailMessage(System.Configuration.ConfigurationManager.AppSettings["mailCfg"], To, Subject, Msg);
        newMsg.BodyEncoding = System.Text.Encoding.UTF8;
        newMsg.HeadersEncoding = System.Text.Encoding.UTF8;
        newMsg.SubjectEncoding = System.Text.Encoding.UTF8;

        System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
        if (AttachmentStream != null && AttachmentType != null && AttachmentFileName != null)
        {
            System.Net.Mail.Attachment attachment = new System.Net.Mail.Attachment(AttachmentStream, AttachmentFileName);
            System.Net.Mime.ContentDisposition disposition = attachment.ContentDisposition;
            disposition.FileName = AttachmentFileName;
            disposition.DispositionType = System.Net.Mime.DispositionTypeNames.Attachment;

            newMsg.Attachments.Add(attachment);
        }
        if (test)
        {
            smtpClient.PickupDirectoryLocation = "C:\\TestEmail";
            smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
        }
        else
        {
            //smtpClient.EnableSsl = true;
        }

        newMsg.IsBodyHtml = bodyHtml;
        smtpClient.Send(newMsg);
        return SENT_OK;
    }
    catch (Exception ex)
    {

        return "Error: " + ex.Message
             + "<br/><br/>Inner Exception: "
             + ex.InnerException;
    }

}

Et la section correspondante dans le web.config:

<appSettings>
    <add key="mailCfg" value="yourmail@example.com"/>
</appSettings>
<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network" from="yourmail@example.com">
      <network defaultCredentials="false" host="mail.exapmple.com" userName="yourmail@example.com" password="your_password" port="25"/>
    </smtp>
  </mailSettings>
</system.net>

Le problème pour moi est que mon mot de passe a un blackslash "\" en elle, que je copie collé sans s'en rendre compte causerait des problèmes.

Essayez celui-ci

public static bool Send(string receiverEmail, string ReceiverName, string subject, string body)
{
        MailMessage mailMessage = new MailMessage();
        MailAddress mailAddress = new MailAddress("abc@gmail.com", "Sender Name"); // abc@gmail.com = input Sender Email Address 
        mailMessage.From = mailAddress;
        mailAddress = new MailAddress(receiverEmail, ReceiverName);
        mailMessage.To.Add(mailAddress);
        mailMessage.Subject = subject;
        mailMessage.Body = body;
        mailMessage.IsBodyHtml = true;

        SmtpClient mailSender = new SmtpClient("smtp.gmail.com", 587)
        {
            EnableSsl = true,
            UseDefaultCredentials = false,
            DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
            Credentials = new NetworkCredential("abc@gmail.com", "pass")   // abc@gmail.com = input sender email address  
                                                                           //pass = sender email password
        };

        try
        {
            mailSender.Send(mailMessage);
            return true;
        }
        catch (SmtpFailedRecipientException ex)
        { }
        catch (SmtpException ex)
        { }
        finally
        {
            mailSender = null;
            mailMessage.Dispose();
        }
        return false;
}

La copie de une autre réponse, les méthodes décrites ci-dessus, mais gmail remplace toujours le "de" et "répondre à" l'e-mail avec le réel de l'envoi de compte gmail.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 "Ajouter une autre adresse de courriel que vous possédez", puis vérifier"

Ou, éventuellement, cette

Mise à jour 3:Lecteur de Derek Bennett dit, "La solution est d'aller dans vos Paramètres gmail:les Comptes et le "par défaut" à un compte autre que votre compte gmail.Ce sera la cause de gmail pour ré-écrire le champ de tout ce que le compte par défaut à l'adresse de courriel est."

Vous pouvez essayer de Mailkit.Ses vous donner mieux et avance functionlity pour envoyer du courrier.Vous pouvez trouver plus de cette Voici un exemple

    MimeMessage message = new MimeMessage();
    message.From.Add(new MailboxAddress("FromName", "YOU_FROM_ADDRESS@gmail.com"));
    message.To.Add(new MailboxAddress("ToName", "YOU_TO_ADDRESS@gmail.com"));
    message.Subject = "MyEmailSubject";

    message.Body = new TextPart("plain")
    {
        Text = @"MyEmailBodyOnlyTextPart"
    };

    using (var client = new SmtpClient())
    {
        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);
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top