Ich dachte das diese Funktion mit ein paar Zeilen Code umsetzbar wäre, aber weit gefehlt. Ich meine es ist ja schon schwer gmail in Outlook zu konfigurrieren aber mit SMTP in C# kriege ich es nicht hin. Hier mein Versuch mit SMTP
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("myUserName@gmail.com");
mail.To.Add("myDestination@yahoo.com");
mail.Subject = "Test Mail";
mail.Body = "This is for testing SMTP mail from GMAIL";
SmtpServer.Port = 465;// 587;
SmtpServer.EnableSsl = true;
SmtpServer.Credentials = new System.Net.NetworkCredential("myUserName", "myPasword");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
MessageBox.Show("mail Send");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Irgendwas scheint hier mit den notwendigen Security features für gmail noch zu fehlen. Diese sind: Gmail SMTP server address: smtp.gmail.com
Gmail SMTP username: Your Gmail address (for example, example@gmail.com)
Gmail SMTP password: Your Gmail password
Gmail SMTP port (TLS): 587
Gmail SMTP port (SSL): 465
Gmail SMTP TLS/SSL required: Yes
Dann habe ich von dem MimeKit gelesen. Ok nuget nie probiert aber irgendwie installiert. Using using MailKit; using MimeKit; genutzt und dann
private void button2_Click(object sender, EventArgs e)
{//https://www.mimekit.net/docs/html/Creating-Messages.htm
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Herm", "jodahush@gmail.com"));
message.To.Add(new MailboxAddress("mann", "jodahush@yahoo.com"));
message.Subject = "How you doin?";
message.Body = new TextPart("plain")
{
Text = @"Hey Alice,
What are you up to this weekend? Monica is throwing one of her parties on
Saturday and I was hoping you could make it.
Will you be my +1?
-- Joey
"
};
}
da tut sich garnix, es fehlt ja auch irgend ein Befehl zum senden wie z.B. message.send(); aber das gibt es nicht.
Kann man nicht einfach den Standard mail client über c# ansprechen und diesem ein vorausgefülltes mail aus den Rippen leiern? Am liebsten die Windows Mail App. Wie auch immer, mal eben schnell ne mail schicken is wohl eher nicht möglich. Gibt es kein Rezept für Einsteiger?
Kleiner Hinweis, nutzt nicht den SmtpClient von .NET
In der Doku wird hier auch schon darauf hingewiesen, dass dieser nicht mehr up2date ist und auch nicht mehr weiterentwickelt wird.
Doku:
https://docs.microsoft.com/de-de/dotnet/api/system.net.mail.smtpclient?view=net-5.0#remarks
Mailkit:
https://github.com/jstedfast/MailKit
Nachtrag:
Jetzt erst gesehen, dass du schon Mailkit verwendest 🙁
Dann musst du auch den SmtpClient von MailKit verwenden.
https://www.mimekit.net/docs/html/T_MailKit_Net_Smtp_SmtpClient.htm
Nachtrag 2:
In der Doku ist auch ganz unten beim Smtp Client passend ein Beispiel für gmail.
Dürfte dir mit dem Versand helfen 🙂
T-Virus
Developer, Developer, Developer, Developer....
99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
danke. So wie es aussieht muss ich Nuget für jede solution extra installieren?
Wie auch immer. Folgendes habe ich gemacht:
using MailKit;
using MimeKit;
using MailKit.Net.Smtp;
using MailKit.Security;
private void button1_Click(object sender, EventArgs e)
{
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Joey", "xxx@gmail.com"));
message.To.Add(new MailboxAddress("Alice", "xxx@yahoo.com"));
message.Subject = "How you doin?";
message.Body = new TextPart("plain")
{
Text = @"Hey Alice,
What are you up to this weekend? Monica is throwing one of her parties on
Saturday and I was hoping you could make it.
Will you be my +1?
-- Joey
"
};
using (var client = new SmtpClient())
{
client.Connect("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect);
client.Authenticate("xxx", "xxx");
client.Send(message);
client.Disconnect(true);
}
Das compliliert, aber beim SEnden habe ich ein Problem mit Username Password
Das Problem ist wohl die Authentifizierung unter gmail.
using (var client = new SmtpClient())
{
//client.Connect("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect);
client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTlsWhenAvailable);
client.Authenticate("xxx", "ccc");
client.Send(message);
Klappt auch nicht: Application specific password required
Bei Google steht:
Postausgangsserver (SMTP)
smtp.gmail.com
SSL erforderlich: Ja
TLS erforderlich: Ja (falls verfügbar)
Authentifizierung erforderlich: Ja
Port für TLS/STARTTLS: 587
Wenn Sie Gmail über ein Konto in Ihrem Unternehmen oder Ihrer Bildungseinrichtung nutzen, fragen Sie Ihren Administrator nach der korrekten SMTP-Konfiguration.
Ich habe beide Varianten versucht, aber es haut nicht hin. Auch in meinem Gmail account habe ich imap aktiviert.
Der Fehler "Application specific password required" sagt dir schon dass du dir ein Passwort für die Anmeldung generieren lassen musst. Du kannst deine Google Kontodaten nicht für IMAP verwenden.
siehe Sign in with App Passwords - Google Account Help
Ja, wieder eine Wissenschaft für sich.
Die Google TOS verbieten einen automatisierten Versand von EMails über deren API.
Die API darf nur für eigene E-Mail Clients verwendet werden bzw. üb E-mails für einen Client abzuholen (Server to Server).
Entsprechend ist das auch keine Wissenschaft für sich, sondern wie sich E-Mail Clients im Jahr 2021 einfach sicher authentifizieren sollen.
Token-basierte Authentifizierungsverfahren sind der Standard für HTTP APIs seit ca. 10 Jahren.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Also das krieg ich nicht auf die Reihe. Hab noch keine Beschreibung gefunden wie ich den Token bekomme und in meiner App verifiziere und nutze.
Und wenn es so einfach wäre in 2021 ein gmail in einer app zu verschicken, hätte man sicher ein komplettes aktuelles Tutorial gefunden.
Ich hatte ja gefragt wie ich ein mail verschicken kann, am besten mit dem standrd mail client. Leider mit Attachment.
Stattdessen hatte ich das versucht:
System.Diagnostics.Process.Start("mailto:hush4@web.de?subject=test&body=teesttext");
Klappt, aber leider nicht mit attachment.
oder So habe ich es in VB gemacht:
In VB habe ich ein anderes Beispiel, das funktioniert:
'StörungsMenge
'** Vorgaben definieren
Set OutlookApp = CreateObject("Outlook.Application")
Set strEmail = OutlookApp.CreateItem(0)
'** PDF erzeugen
'ActiveWorkbook.
ActiveWorkbook.Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
PathFile, Quality:=xlQualityStandard _
, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
:=False
'** E-Mail versenden
strPDF = PathFile
With strEmail
.To = "GetGruppe" '"name@domain.tld"
.Subject = fileName + " als Anlage" 'Betreffzeile
.body = TextBlock
.Attachments.Add PathFile
.Display
'.Send 'Damit wir die E-Mail sofort versendet
End With
Ich hatte ja gefragt wie ich ein mail verschicken kann, am besten mit dem standrd mail client. Leider mit Attachment.
Du befindest Dich in einem C# bzw. .NET Forum. Der Standard für Mails in .NET ist die Smtp Klasse.
Da diese veraltet ist hast Du die Antwort bekommen, dass man das mit dem MailKit macht.
Du sprichst nun offenbar aber von einem Standard Desktop Client, also zB Outlook.
Keiner hier konnte wissen, da Du Dich eben in einem C# Forum befindest, dass Du damit eine Desktop Anwendung meinst, wenn Du es nicht ausdrücklich sagst.
Entsprechend hast Du auch Hinweise bekommen, wie man es mit Code löst.
Mit Deinem VB Script automatisierst Du eine Anwendung.
Das ist was völlig anderes als mit einer API zu kommunizieren; das sind Äpfel und Birnen.
Beschreibe mal bitte so, dass man es versteht, was Du tun willst:
Und doch, die Google Mail API ist hervorragend dokumentiert.
https://developers.google.com/gmail/api/quickstart/dotnet
Wie man lesen kann, wenn man sie liest, dann sieht man, dass das Google SDK das alles abnimmt.
Aber: man muss die Doku halt lesen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich möchte einfach ein Programm schreiben, in dem ich u.a. eine Mail verschicken kann.
Dabei ist es mir egal ob der Standard Mail client aufgerufen wird oder eine andere Lösung funktioniert.
Es sollte halt einigermaßen einfach umsetzbar sein.
Durch die geänderten Sicherheitsbestimmungen bei Google scheint es mit GMail in Verbindung mit SMTP auf C# nicht mit einem überschaubaren Aufwand möglich zu sein ein mail zu senden.
Ich weiß was VBA ist und habe das ganze Programm in VB realisiert und kann so eine Arbeit die normalerweise 30min dauert locker in 5 min erledigen.
Durch die geänderten Sicherheitsbestimmungen bei Google scheint es mit GMail in Verbindung mit SMTP auf C# nicht mit einem überschaubaren Aufwand möglich zu sein ein mail zu senden.
Das hat nichts mit C# oder mit .NET zutun. An die Sicherheitsbestimmungen muss man sich mit allen Sprachen und Runtimes halten - auch mit VB kannst SMTP von Google nicht einfach so verwenden bzw für diesen Zweck missbrauchen.
Der Aufwand ist mit allen Sprachen bzw. Runtimes relativ identisch.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code