old - smtp google c#




Invio di email in.NET tramite Gmail (15)

Invece di affidarmi al mio ospite per inviare email, stavo pensando di inviare i messaggi e-mail usando il mio account Gmail. Le e-mail sono e-mail personalizzate per le band che suono nel mio show. È possibile farlo?


Affinché le altre risposte funzionino "da un server", attiva innanzitutto l' accesso per le app meno sicure nell'account Gmail.

Sembra che Google abbia cambiato di recente la sua politica di sicurezza. La risposta più votata non funziona più finché non modifichi le impostazioni dell'account come descritto qui: https://support.google.com/accounts/answer/6010255?hl=en-GB

A partire da marzo 2016, Google ha cambiato di nuovo il luogo dell'impostazione!


Copiando da un'altra risposta , i metodi sopra funzionano ma Gmail sostituisce sempre le e-mail "da" e "rispondi a" con l'effettivo account Gmail mittente. a quanto pare c'è un lavoro intorno comunque:

http://karmic-development.blogspot.in/2013/10/send-email-from-aspnet-using-gmail-as.html

"3. Nella scheda Account, fai clic sul link" Aggiungi un altro indirizzo email di tua proprietà "quindi verificalo"

O forse this

Aggiornamento 3: Lettore Derek Bennett afferma: "La soluzione è entrare nelle tue impostazioni di Gmail: Account e" Imposta come predefinito "un account diverso dal tuo account Gmail. Ciò farà sì che Gmail riscriva il campo Da con qualsiasi email dell'account predefinito l'indirizzo è."


Ecco un metodo per inviare posta e ottenere credenziali da 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;
    }

}

E la sezione corrispondente in web.config:

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

Google potrebbe bloccare i tentativi di accesso da alcune app o dispositivi che non utilizzano i moderni standard di sicurezza. Dal momento che queste app e questi dispositivi sono più facili da penetrare, il loro blocco aiuta a mantenere il tuo account più sicuro.

Alcuni esempi di app che non supportano i più recenti standard di sicurezza includono:

  • L'app Mail sul tuo iPhone o iPad con iOS 6 o inferiore
  • L'app Mail sul tuo telefono Windows che precede la versione 8.1
  • Alcuni client di posta Desktop come Microsoft Outlook e Mozilla Thunderbird

Pertanto, devi abilitare l'accesso meno sicuro nel tuo account google.

Dopo l'accesso all'account google, vai a:

https://myaccount.google.com/lesssecureapps
o
https://www.google.com/settings/security/lesssecureapps

In C #, puoi usare il seguente codice:

using (MailMessage mail = new MailMessage())
{
    mail.From = new MailAddress("[email protected]");
    mail.To.Add("[email protected]");
    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 protected]", "password");
        smtp.EnableSsl = true;
        smtp.Send(mail);
    }
}

Il problema per me era che la mia password aveva un "\" blackstash in esso, che copiavo incollato senza rendermene conto avrebbe causato problemi.


Includi questo,

using System.Net.Mail;

E poi,

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("[email protected]","password");
client.EnableSsl = true;

client.Send(sendmsg);

Modifica del mittente su email Gmail / Outlook.com:

Per evitare spoofing - Gmail / Outlook.com non ti consente di inviare da un nome account utente arbitrario.

Se disponi di un numero limitato di mittenti, puoi seguire queste istruzioni e quindi impostare il campo From a questo indirizzo: Invio di posta da un indirizzo diverso

Se desideri inviare da un indirizzo email arbitrario (ad esempio un modulo di feedback sul sito web in cui l'utente inserisce la loro email e non vuoi che ti invii direttamente via email) il meglio che puoi fare è questo:

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

Questo ti permetterebbe di colpire la "risposta" nel tuo account di posta elettronica per rispondere ai fan della tua band su una pagina di feedback, ma non riceverebbero la tua email effettiva che probabilmente porterebbe a una tonnellata di spam.

Se ti trovi in ​​un ambiente controllato, funziona molto bene, ma tieni presente che ho visto alcuni client di posta elettronica che inviano all'indirizzo di posta elettronica anche quando viene specificato il tipo di risposta (non so quale).



Prova questo,

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

            mail.From = new MailAddress("[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 = new System.Net.NetworkCredential("username", "password");
            SmtpServer.EnableSsl = true;

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

Questo è per inviare e-mail con allegato .. Semplice e breve ..

fonte: 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 [email protected]");
    mail.To.Add("[email protected]");
    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 [email protected]", "your password");
    SmtpServer.EnableSsl = true;

    SmtpServer.Send(mail);

}

Spero che questo codice funzioni bene. Puoi fare una prova.

// 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 = 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("[email protected]");
//address to which mail will be sent.           
send_mail.To.Add(new MailAddress("[email protected]");
//subject of the mail.
send_mail.Subject = "put any subject here";

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


http://www.systemnetmail.com/ è probabilmente il sito più assurdamente completo dedicato a un singolo namespace .NET ... ma ha TUTTO ciò che vorresti sapere sull'invio di posta via .NET, sia ASP.NET o Desktop.

http://www.systemwebmail.com/ era l'URL originale nel post, ma non dovrebbe essere utilizzato per .NET 2.0 e versioni successive.


Fonte : invia email in ASP.NET C #

Di seguito è riportato un esempio di codice funzionante per l'invio di una posta utilizzando C #, nell'esempio seguente sto utilizzando il server smtp di Google.

Il codice è piuttosto auto-esplicativo, sostituisci e-mail e password con i valori di e-mail e password.

public void SendEmail(string address, string subject, string message)
{
    string email = "[email protected]";
    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);
}

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

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

      //Specify senders gmail address
      string SendersAddress = "[email protected]";
      //Specify The Address You want to sent Email To(can be any valid email address)
      string ReceiversAddress = "[email protected]";
      //Specify The password of gmial account u are using to sent mail(pw of [email protected])
      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();
     }
}
}
}




gmail