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

876

Anstatt mich beim Senden einer E-Mail auf meinen Host zu verlassen, wollte ich die E-Mail-Nachrichten über mein Google Mail- Konto senden . Die E-Mails sind personalisierte E-Mails an die Bands, die ich in meiner Show spiele.

Ist es möglich das zu tun?

Mike Wills
quelle
1
< systemnetmail.com > ist wahrscheinlich die absurd vollständigste Site, die einem einzelnen .NET-Namespace gewidmet ist ... aber sie enthält ALLES, was Sie jemals über das Senden von E-Mails über .NET wissen möchten, sei es ASP.NET oder Desktop. < systemwebmail.com > war die ursprüngliche URL im Beitrag, sollte jedoch nicht für .NET 2.0 und höher verwendet werden.
Adam Haile
13
Wenn Sie ASP.Net Mvc verwenden, würde ich empfehlen, einen Blick auf MvcMailer zu werfen: github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide
noocyte
Ich habe ein schönes Beispiel dafür auf meiner Website jarloo.com/gmail-in-c
Kelly
Wie sende ich eine Datei mit diesem Code?
Ranadheer Reddy
Mögliches Duplikat des Sendens von E-Mails über den Google Mail-SMTP-Server mit C #
George Duckett

Antworten:

1065

Achten Sie darauf System.Net.Mail, nicht die veralteten zu verwenden System.Web.Mail. SSL mit System.Web.Mailist ein grobes Durcheinander von hackigen 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);
}
Domenic
quelle
49
Es kann immer noch vorkommen, dass Benutzer nicht angemeldet sind, wenn Google plötzlich feststellt, dass Sie in den letzten xx Minuten zu viele gesendet haben. Sie sollten immer ein trySend hinzufügen, wenn es eine Weile nicht funktioniert, und es dann erneut versuchen.
Jason Short
72
Interessanter Hinweis: Wenn Sie "UseDefaultCredentials = false" und "Credentials = ..." austauschen, wird die Authentifizierung nicht durchgeführt.
Nathan Wheeler
13
Es gibt keine Probleme mit SPF bei Verwendung dieser Methode. Jeder E-Mail-Client kann genau dafür konfiguriert werden. Sie können nur Probleme bekommen, wenn Sie Ihren eigenen Server (dh etwas anderes als smtp.gmail.com) [email protected]als Absender verwenden. Übrigens: smtp.gmail.comÜberschreibt automatisch die Absenderadresse, wenn es nicht Ihre ist.
Meinersbur
24
Es fiel mir schwer, dies zum Laufen zu bringen, obwohl ich verschiedene Optimierungen ausprobiert hatte. Wie in einem verwandten Beitrag vorgeschlagen, stellte ich fest, dass es tatsächlich mein Antivirenprogramm war, das den erfolgreichen Versand von E-Mails verhinderte. Bei dem fraglichen Antivirenprogramm handelt es sich um McAffee. Für den "Zugriffsschutz" gilt die Kategorie "Antivirus-Standardschutz" mit der Regel "Verhindern, dass Massenmailing-Würmer E-Mails senden". Durch das Optimieren / Deaktivieren dieser Regel funktionierte dieser Code für mich!
Yourbuddypal
18
Ich erhielt die Fehlermeldung 5.5.1 Authentifizierung erforderlich, bis mir klar wurde, dass ich mit einem Konto (meinem persönlichen Konto) getestet habe, bei dem die Zwei-Faktor-Authentifizierung aktiviert war. Sobald ich ein Konto verwendet habe, das das nicht hatte, hat es gut funktioniert. Ich hätte auch ein Passwort für meine Anwendung generieren können, das ich in meinem persönlichen Konto getestet habe, aber das wollte ich nicht.
Nick DeVore
153

Die obige Antwort funktioniert nicht. Sie müssen festlegen, sonst DeliveryMethod = SmtpDeliveryMethod.Networkwird der Fehler " Client wurde nicht authentifiziert " angezeigt. Es ist auch immer eine gute Idee, eine Auszeit zu nehmen.

Ü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);
}
Donny V.
quelle
3
Interessant; es funktioniert auf meinem Computer (TM). Aber da dies plausibel erscheint, werde ich es meiner Antwort hinzufügen.
Domenic
3
Hmm, ich vermute, dass SmtpDeliveryMethod.Network die Standardeinstellung ist, aber möglicherweise wird die Standardeinstellung beim Ausführen in IIS geändert - haben Sie das getan?
Domenic
3
Ich verwende denselben Code in der Konsolenanwendung. Der Fehler "Fehler beim Senden von E-Mails" ist aufgetreten.
Karthikeyan P
5
Diese Antwort funktioniert nicht. Bitte schauen Sie sich die Frage stackoverflow.com/questions/34851484/…
110

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

Es sieht so aus, als hätte Google kürzlich seine Sicherheitsrichtlinie 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=de-DEGeben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

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

BCS-Software
quelle
4
Das hat bei mir funktioniert. Und ist auch besorgniserregend. Ich bin mir nicht sicher, ob ich diese Sicherheit ausschalten möchte.
Sully
4
Aus Sicherheitsgründen ist es besser, die Bestätigung in zwei Schritten zu aktivieren und dann das App-Passwort zu generieren und zu verwenden. Siehe So senden Sie eine E-Mail in .Net gemäß den neuen Sicherheitsrichtlinien.
Michael Freidgeim
2
@BCS Software, in meinem Programm, der Benutzer fügt jede E-Mail ein, die mein Programm verwenden muss, um die Nachricht durch zu senden. Wie kann ich dem E-Mail-Benutzer das Senden der E-Mail ermöglichen, selbst wenn die 2-Faktor-Authentifizierung aktiviert ist?
Alaa
Dies ist die gleiche Einstellung, die Sie ändern müssen, wenn Sie einen Microsoft Outlook-Client (auf einem Desktop, einem Mobiltelefon usw.) zum Senden / Empfangen von E-Mails über Googles GMail verwenden möchten.
Brett Rigby
41

Hiermit senden Sie eine 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 [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);

}
Ranadheer Reddy
quelle
21

Google blockiert möglicherweise Anmeldeversuche von einigen Apps oder Geräten, die keine modernen Sicherheitsstandards verwenden. Da es einfacher ist, in diese Apps und Geräte einzubrechen, können Sie sie blockieren, indem Sie sie blockieren.

Einige Beispiele für Apps, die die neuesten Sicherheitsstandards nicht 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 die weniger sichere Anmeldung in Ihrem Google-Konto aktivieren .

Nachdem Sie sich in einem Google-Konto angemeldet haben, gehen Sie 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 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);
    }
}
mjb
quelle
17

Damit es funktioniert, musste ich mein Google Mail-Konto aktivieren, damit andere Apps darauf zugreifen können. Dies geschieht mit "weniger sichere Apps aktivieren" und auch über diesen Link: https://accounts.google.com/b/0/DisplayUnlockCaptcha

Mark Homans
quelle
16

Hier ist meine Version: " E-Mail in C # mit Google Mail 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();
     }
    }
   }
 }
tehie
quelle
8
Während Ihr Artikel tatsächlich die Frage beantworten kann, ist es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Der Stapelüberlauf ist nur so nützlich wie seine Fragen und Antworten. Wenn Ihr Blog-Host ausfällt oder Ihre URLs verschoben werden, wird diese Antwort unbrauchbar. Vielen Dank!
Sarnold
14

Ich hoffe, dieser Code wird gut funktionieren. 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);
Premdeep Mohanty
quelle
2
message send_mail = new MailMessage (); Wie soll diese Linie funktionieren? Sie können 'System.Net.Mail.MailMessage' nicht implizit in 'System.Windows.Forms.Message'
konvertieren
9

Schließen 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);
GOPI
quelle
8

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

Unten finden Sie einen Beispielarbeitscode zum Senden 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 = "[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);
}
Yasser Shaikh
quelle
Anstelle von var habe ich Klassennamen wie NetworkCredential, MailMessage und SmtpClient verwendet. Es funktioniert für mich.
Jui Test
7

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

using System.Threading;
RAJESH KUMAR
quelle
5

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());
        }
    }
Trimantra-Softwarelösung
quelle
4

benutze diesen Weg

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("[email protected]","MyPassWord");
client.Send(sendmsg);

Vergiss das nicht:

using System.Net;
using System.Net.Mail;
Alireza Amini
quelle
4

Um Sicherheitsprobleme in Google Mail zu vermeiden, sollten Sie zuerst ein App-Kennwort aus Ihren Google Mail-Einstellungen generieren. Sie können dieses Kennwort anstelle eines echten Kennworts zum Senden einer E-Mail verwenden, auch wenn Sie die Bestätigung in zwei Schritten verwenden.

Sagte Uz Zaman
quelle
3

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

Um Spoofing zu verhindern, können Sie in Google Mail / Outlook.com nicht von einem beliebigen Benutzerkontonamen aus senden.

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

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

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

Auf diese Weise könnten Sie einfach in Ihrem E-Mail-Konto auf "Antworten" klicken, um dem Fan Ihrer Band auf einer Feedback-Seite zu antworten, aber er würde Ihre eigentliche E-Mail nicht erhalten, was wahrscheinlich zu einer Tonne Spam führen würde.

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

Simon_Weaver
quelle
3

Ich hatte das gleiche Problem, aber es wurde behoben, indem die Sicherheitseinstellungen von Google Mail aufgerufen und weniger sichere Apps zugelassen wurden . Der Code von Domenic & Donny funktioniert, aber nur, wenn Sie diese Einstellung aktiviert haben

Wenn Sie (bei Google) angemeldet sind, können Sie diesem Link folgen und "Aktivieren" für "Zugriff für weniger sichere Apps" aktivieren.

DarkPh03n1X
quelle
3
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();
     }
}
}
}
Moin Shirazi
quelle
2

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="[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>
iTURTEV
quelle
2

Probier diese

public static bool Send(string receiverEmail, string ReceiverName, string subject, string body)
{
        MailMessage mailMessage = new MailMessage();
        MailAddress mailAddress = new MailAddress("[email protected]", "Sender Name"); // [email protected] = 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("[email protected]", "pass")   // [email protected] = input sender email address  
                                                                           //pass = sender email password
        };

        try
        {
            mailSender.Send(mailMessage);
            return true;
        }
        catch (SmtpFailedRecipientException ex)
        { 
          // Write the exception to a Log file.
        }
        catch (SmtpException ex)
        { 
           // Write the exception to a Log file.
        }
        finally
        {
            mailSender = null;
            mailMessage.Dispose();
        }
        return false;
}
reza.cse08
quelle
1

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

Satbir Kira
quelle
1

Beim Kopieren von einer anderen Antwort funktionieren die oben genannten Methoden, aber Google Mail ersetzt immer die E-Mails "Von" und "Antworten auf" durch das tatsächlich sendende Google Mail-Konto. anscheinend gibt es jedoch eine Umgehung:

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 überprüfen Sie diese."

Oder vielleicht das hier

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

Rogerdpack
quelle
1

Sie können es versuchen Mailkit. Es bietet Ihnen bessere und erweiterte Funktionen zum Senden von E-Mails. Sie können mehr von finden dies hier ein Beispiel

    MimeMessage message = new MimeMessage();
    message.From.Add(new MailboxAddress("FromName", "[email protected]"));
    message.To.Add(new MailboxAddress("ToName", "[email protected]"));
    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);
    }
Naveen
quelle