Frage

Anstatt mich beim Versenden von E-Mails auf meinen Host zu verlassen, dachte ich darüber nach, die E-Mail-Nachrichten über mein Gmail-Konto zu versenden.Bei den E-Mails handelt es sich um personalisierte E-Mails an die Bands, die ich in meiner Show spiele.Ist das möglich?

War es hilfreich?

Lösung

Unbedingt verwenden System.Net.Mail, nicht das veraltete System.Web.Mail.SSL mit machen System.Web.Mail ist ein riesengroßes Durcheinander hackiger Erweiterungen.

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

Andere Tipps

Die obige Antwort funktioniert nicht.Du musst einstellen DeliveryMethod = SmtpDeliveryMethod.Network oder es wird mit einem „ zurückkommenDer Client wurde nicht authentifiziert" Fehler.Außerdem ist es immer eine gute Idee, eine Auszeit zu nehmen.

Überarbeiteter Code:

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

Damit die anderen Antworten zunächst „von einem Server aus“ funktionieren Aktivieren Sie den Zugriff für weniger sichere Apps im Gmail-Konto.

Offenbar hat Google kürzlich seine Sicherheitsrichtlinien geändert.Die am besten bewertete Antwort funktioniert nicht mehr, bis Sie Ihre Kontoeinstellungen wie hier beschrieben ändern: https://support.google.com/accounts/answer/6010255?hl=en-GBenter image description here

enter image description here

Seit März 2016 hat Google den Einstellungsort erneut geändert!

Dies dient zum Versenden einer E-Mail mit Anhang.Einfach und kurz..

Quelle: 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 blockiert möglicherweise Anmeldeversuche von einigen Apps oder Geräten, die nicht moderne Sicherheitsstandards verwenden.Da es einfacher ist, in diese Apps und Geräte einzudringen, trägt ihre Blockierung dazu bei, die Sicherheit Ihres Kontos zu erhöhen.

Einige Beispiele für Apps, die nicht die neuesten Sicherheitsstandards unterstützen, sind:

  • Die Mail-App auf Ihrem iPhone oder iPad mit iOS 6 oder niedriger
  • Die Mail-App auf Ihrem Windows Phone vor der Version 8.1
  • Einige Desktop-Mail-Clients wie Microsoft Outlook und Mozilla Thunderbird

Daher müssen Sie es aktivieren Weniger sichere Anmeldung in Ihrem Google-Konto.

Gehen Sie nach der Anmeldung bei Ihrem Google-Konto zu:

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

In C# können Sie den folgenden Code verwenden:

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

Hier ist meine Version:"Senden Sie E-Mails in C# mit 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();
     }
    }
   }
 }

Damit es funktionierte, musste ich mein Gmail-Konto aktivieren, um anderen Apps den Zugriff zu ermöglichen.Dies geschieht mit der Option „Weniger sichere Apps aktivieren“ und Auch über diesen Link:https://accounts.google.com/b/0/DisplayUnlockCaptcha

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

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

Fügen Sie dies hinzu,

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("mail-id@gmail.com","password");
client.EnableSsl = true;

client.Send(sendmsg);

Quelle : E-Mail in ASP.NET C# senden

Unten finden Sie einen Beispiel-Arbeitscode zum Versenden einer E-Mail mit C#. Im folgenden Beispiel verwende ich den SMTP-Server von Google.

Der Code ist ziemlich selbsterklärend. Ersetzen Sie E-Mail und Passwort durch Ihre E-Mail- und Passwortwerte.

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

Wenn Sie Hintergrund-E-Mails senden möchten, gehen Sie bitte wie folgt vor

 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 Namensraum hinzufügen

using System.Threading;

auf diese Weise verwenden

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

Vergessen Sie das nicht:

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

Ein Tipp!Überprüfen Sie den Posteingang des Absenders. Möglicherweise müssen Sie weniger sichere Apps zulassen.Sehen: https://www.google.com/settings/security/lesssecureapps

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

Absender bei Gmail-/Outlook.com-E-Mails ändern:

Um Spoofing zu verhindern, lässt Gmail/Outlook.com nicht zu, dass Sie von einem beliebigen Benutzerkontonamen aus senden.

Wenn Sie eine begrenzte Anzahl von Absendern haben, können Sie diese Anweisungen befolgen und dann die festlegen From Feld an diese Adresse: E-Mails von einer anderen Adresse senden

Wenn Sie von einer beliebigen E-Mail-Adresse aus senden möchten (z. B. einem Feedback-Formular auf einer Website, in das der Benutzer seine E-Mail-Adresse eingibt und Sie nicht möchten, dass er Ihnen direkt eine E-Mail sendet), können Sie am besten Folgendes tun:

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

Damit könntest du einfach in deinem E-Mail-Konto auf „Antworten“ klicken, um dem Fan deiner Band auf einer Feedback-Seite zu antworten, aber er würde nicht deine eigentliche E-Mail erhalten, was wahrscheinlich zu einer Menge Spam führen würde.

Wenn Sie sich in einer kontrollierten Umgebung befinden, funktioniert dies hervorragend. Beachten Sie jedoch, dass einige E-Mail-Clients auch dann an die Absenderadresse gesendet haben, wenn eine Antwort angegeben wurde (ich weiß nicht, welche).

Ich hatte das gleiche Problem, aber es wurde durch Aufrufen der Sicherheitseinstellungen von Google Mail behoben Weniger sichere Apps zulassen.Der Code von Domenic & Donny funktioniert, aber nur, wenn Sie diese Einstellung aktiviert haben

Wenn Sie angemeldet sind (bei Google), können Sie folgen Das verknüpfen und umschalten "Anmachen" für „Zugriff für weniger sichere Apps“

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

Hier ist eine Methode zum Senden von E-Mails und zum Abrufen von Anmeldeinformationen von 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;
    }

}

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

Das Problem für mich war, dass mein Passwort hatte einen schwarzen Schrägstrich „\“ darin, das ich kopiere und einfüge, ohne zu wissen, dass es Probleme verursachen würde.

Probier diese

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

Kopieren von noch eine Antwort, die oben genannten Methoden funktionieren, aber Gmail ersetzt die E-Mail-Adressen „Von“ und „Antwort an“ immer durch das tatsächlich sendende Gmail-Konto.Anscheinend gibt es jedoch eine Lösung:

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

"3.Klicken Sie auf der Registerkarte „Konten“ auf den Link „Fügen Sie eine weitere E-Mail-Adresse hinzu, die Sie besitzen“ und bestätigen Sie diese.

Oder möglicherweise Das

Update 3:Leser Derek Bennett sagt: „Die Lösung besteht darin, in Ihre Gmail-Einstellungen:Konten zu gehen und ein anderes Konto als Ihr Gmail-Konto als Standard festzulegen.“Dies führt dazu, dass Gmail das Feld „Von“ mit der E-Mail-Adresse des Standardkontos neu schreibt.“

Sie können Mailkit ausprobieren.Es bietet Ihnen bessere und erweiterte Funktionen zum Versenden von E-Mails.Weitere Informationen finden Sie unter Das Hier ist ein Beispiel

    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);
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top