it-swarm.com.de

Senden Sie E-Mails über C # über das Google Apps-Konto

Ich habe ein Standard-Google Apps-Konto. Ich habe eine benutzerdefinierte Domain über Google Apps eingerichtet. Ich kann mit Google Apps erfolgreich E-Mails senden und empfangen, wenn ich die Google Mail-Benutzeroberfläche verwende. Ich möchte jedoch eine E-Mail mit einem Code senden. Um dies zu versuchen, habe ich folgenden Code ausprobiert:

MailMessage mailMessage = new MailMessage();
mailMessage.To.Add("[email protected]");
mailMessage.Subject = "Test";
mailMessage.Body = "<html><body>This is a test</body></html>";
mailMessage.IsBodyHtml = true;

// Create the credentials to login to the gmail account associated with my custom domain
string sendEmailsFrom = "[email protected]";             
string sendEmailsFromPassword = "password";
NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword);

SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587);
mailClient.EnableSsl = true;
mailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
mailClient.UseDefaultCredentials = false;
mailClient.Timeout = 20000;
mailClient.Credentials = cred;
mailClient.Send(mailMessage); 

Wenn die Send-Methode erreicht ist, wird eine Exception ausgelöst, die Folgendes angibt:

"Der SMTP-Server erfordert eine sichere Verbindung oder der Client wurde nicht Authentifiziert. Die Serverantwort Lautete: 5.5.1 Authentifizierung erforderlich."

Wie versende ich E-Mails über meine benutzerdefinierte Domain über Google?

Vielen Dank!

63
user70192

Es ist nicht notwendig, alle SMTP-Einstellungen in Ihrem Code fest zu codieren. Legen Sie sie stattdessen in web.config ein. Auf diese Weise können Sie diese Einstellungen bei Bedarf verschlüsseln und im laufenden Betrieb ändern, ohne Ihre Anwendung neu zu kompilieren.

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="[email protected]" deliveryMethod="Network">
          <network Host="smtp.gmail.com" port="587"
              userName="[email protected]" password="password"/>
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

Wenn Sie eine E-Mail senden, aktivieren Sie einfach SSL in Ihrem SmtpClient:

var message = new MailMessage("[email protected]");
// here is an important part:
message.From = new MailAddress("[email protected]", "Mailer");
// it's superfluous part here since from address is defined in .config file
// in my example. But since you don't use .config file, you will need it.

var client = new SmtpClient();
client.EnableSsl = true;
client.Send(message);

Stellen Sie sicher, dass Sie E-Mails von derselben E-Mail-Adresse senden, mit der Sie sich bei Gmail authentifizieren möchten.

Hinweis : Ab .NET 4.0 können Sie enableSsl = "true" in web.config einfügen, anstatt es im Code festzulegen.

91

Das ist was ich in WPF 4 verwende

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("[email protected]", "[email protected]$$w0rD");
client.Port = 587;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;

try {
    MailAddress
        maFrom = new MailAddress("[email protected]", "Sender's Name", Encoding.UTF8),
        maTo = new MailAddress("[email protected]", "Recipient's Name", Encoding.UTF8);
    MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address);
    mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>";
    mmsg.BodyEncoding = Encoding.UTF8;
    mmsg.IsBodyHtml = true;
    mmsg.Subject = "Some Other Text as Subject";
    mmsg.SubjectEncoding = Encoding.UTF8;

    client.Send(mmsg);
    MessageBox.Show("Done");
} catch (Exception ex) {
    MessageBox.Show(ex.ToString(), ex.Message);
    //throw;
}

Achten Sie auf Firewalls und Virenschutzprogramme. Diese gruseligen Dinge neigen dazu, Anwendungen zu blockieren, die E-Mails senden ... Ich benutze McAfee Enterprise und muss den Namen der ausführbaren Datei (wie Bazar. * Für Bazar.exe und Bazar.vshost.exe) hinzufügen, um E-Mails senden zu können. .

7
Achilles

Es ist nichts zu tun. Melden Sie sich beim ersten Mal bei Ihrem aktuellen Konto an und folgen Sie den Anweisungen. 

Ihr Problem wird gelöst. Dies ist darauf zurückzuführen, dass Sie das Konto in Google Apps erstellt haben, sich aber nicht angemeldet haben. Einfach einloggen und den Anweisungen folgen und versuchen.

3
Jeevan

Ändern Sie den Port auf 465

3
sf.

Mein Code stellt eine Verbindung zu smtp.google.com mit TLS an Port = 587 her (SSL sollte Port 465 sein), er benötigt jedoch weiterhin EnableSsl = true 

SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
NetworkCredential credentials = new NetworkCredential();
credentials.UserName = "INSERT EMAIL";
credentials.Password = "INSERT PASSWORD";
smtp.Credentials = credentials;

MailAddress addressFrom = new MailAddress(credentials.UserName);
MailAddress addressTo = new MailAddress("INSERT RECIPIENT");
MailMessage msg = new MailMessage(addressFrom, addressTo);
msg.Subject = "SUBJECT"
msg.Body = "BODY";

smtp.Send(msg);

Beachten Sie diese wichtigen Voraussetzungen in Ihrem G SUITE-Konto