google - smtp gmail asp net c#




Senden von E-Mails in.NET über Google Mail (15)

Anstatt sich auf meinen Host zu verlassen, um E-Mails zu versenden, dachte ich daran, die E-Mail-Nachrichten über mein Google Mail-Konto zu senden. Die E-Mails sind personalisierte E-Mails an die Bands, die ich in meiner Show spiele. Ist es möglich zu tun?


Absender in Gmail / Outlook.com E-Mail ändern:

So verhindern Sie Spoofing - Gmail / Outlook.com lässt Sie nicht von einem beliebigen Benutzerkontonamen aus senden.

Wenn Sie eine begrenzte Anzahl von Absendern haben, können Sie diese Anweisungen befolgen und dann das From Feld auf diese Adresse einstellen: Senden von E-Mails von einer anderen Adresse

Wenn Sie von einer beliebigen E-Mail-Adresse senden möchten (z. B. ein Feedback-Formular auf der Website, auf dem der Nutzer seine E-Mail-Adresse eingibt und Sie nicht direkt per E-Mail benachrichtigt werden möchten), sollten Sie Folgendes tun:

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

Dadurch könntest du in deinem E-Mail-Konto einfach "antworten", um dem Fan deiner Band auf einer Feedback-Seite zu antworten, aber sie würden deine eigentliche E-Mail nicht erhalten, was wahrscheinlich zu einer Tonne Spam führen würde.

Wenn Sie sich in einer kontrollierten Umgebung befinden, funktioniert das großartig, aber bitte beachten Sie, dass ich einige E-Mail-Clients gesehen habe, die an die von-Adresse gesendet haben, auch wenn eine Antwort angegeben ist (ich weiß nicht welche).


Damit die anderen Antworten "von einem Server" funktionieren, aktivieren Sie zuerst den Zugriff für weniger sichere Apps im Google Mail-Konto.

Sieht so aus, als hätte Google kürzlich seine Sicherheitsrichtlinien geändert. Die am besten bewertete Antwort funktioniert nicht mehr, bis Sie Ihre Kontoeinstellungen wie hier beschrieben geändert haben: https://support.google.com/accounts/answer/6010255?hl=en-GB

Ab März 2016 hat Google den Einstellungsort wieder geändert!


Das Problem für mich war, dass mein Passwort einen schwarzen Schrägstrich "\" enthielt , den ich kopierte, ohne zu merken, dass es Probleme verursachen würde.


Die obige Antwort funktioniert nicht. Sie müssen DeliveryMethod = SmtpDeliveryMethod.Network oder es wird mit einem Fehler zurückgegeben " Client wurde nicht authentifiziert ". Es ist auch immer eine gute Idee, eine Zeitüberschreitung zu setzen.

Überarbeiteter Code:

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

var fromAddress = new MailAddress("[email protected]", "From Name");
var toAddress = new MailAddress("[email protected]", "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);
}


Fügen Sie dies ein,

using System.Net.Mail;

Und dann,

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);

Hier ist eine Methode, um E-Mails zu senden und Anmeldeinformationen von web.config zu erhalten:

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;
    }

}

Und der entsprechende Abschnitt 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>

Hier ist meine Version: " E-Mail in C # mit Gmail senden ".

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();
     }
    }
   }
 }

Ich hoffe, dass dieser Code gut funktioniert. Sie können es versuchen.

// 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);

Kopieren von einer anderen Antwort funktioniert die oben genannten Methoden, aber Gmail ersetzt immer die E-Mail von "Von" und "Antwort auf" mit dem tatsächlichen sendenden Google Mail-Konto. anscheinend gibt es jedoch eine Arbeit um:

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

3. Klicken Sie in der Registerkarte "Accounts" auf den Link "Fügen Sie eine andere E-Mail-Adresse hinzu, die Ihnen gehört" und bestätigen Sie diese. "

Oder möglicherweise this

Update 3: Leser Derek Bennett sagt: "Die Lösung besteht darin, in Ihre Google Mail-Einstellungen: Konten und" Als Standard "ein anderes Konto als Ihr Google Mail-Konto zu verwenden. Dadurch wird in Google Mail das Feld Von mit der E-Mail des Standardkontos neu geschrieben die Adresse ist."


Versuche dies,

    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());
        }
    }

Wenn Sie Hintergrund-E-Mails senden möchten, tun Sie dies bitte unten

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

      //Place your Code here 

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

und namespace hinzufügen

using System.Threading;

http://www.systemnetmail.com/ ist wahrscheinlich die absurdeste vollständige Site, die einem einzelnen .NET-Namespace gewidmet ist ... aber es hat ALLES, was Sie jemals über das Senden von Mail über .NET wissen möchten, sei es ASP.NET oder Desktop.

http://www.systemwebmail.com/ war die ursprüngliche URL im Post, sollte aber nicht für .NET 2.0 und höher verwendet werden.


System.Net.Mail Sie sicher, dass Sie System.Net.Mail und nicht die veraltete System.Web.Mail . SSL mit System.Web.Mail tun, ist ein großes Durcheinander von Hacky-Erweiterungen.

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

var fromAddress = new MailAddress("[email protected]", "From Name");
var toAddress = new MailAddress("[email protected]", "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);
}

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