Laden...

Wie kann man eine Mail über MS.Office.Interop.Outlook verschlüsseln (nicht signieren)

Erstellt von Brendan vor 6 Jahren Letzter Beitrag vor 6 Jahren 5.735 Views
B
Brendan Themenstarter:in
39 Beiträge seit 2006
vor 6 Jahren
Wie kann man eine Mail über MS.Office.Interop.Outlook verschlüsseln (nicht signieren)

Hallo,

Ich bin gerade dabei in einer WPF-Anwendung mit VS2015 mittels Microsoft.Office.Interop.Outlook.MailItem eine Methode zu schreiben, die im code-behind Emails versendet.
Das funktioniert bereits.
Nun möchte ich diese Mail - da sie ein Login für einen neuen User enthält - auch noch verschlüsseln - nicht signieren.
Wie macht man das am geschicktesten?

Vielen Dank im voraus!

Anbei noch mein Code, den ich für den Versand geschrieben habe:


private void SendEmailWithNewPassword()
{
	try
	{
		var app = new Microsoft.Office.Interop.Outlook.Application();
		StringBuilder body = new StringBuilder();

		if (app != null)
		{
			Microsoft.Office.Interop.Outlook.MailItem mailItem = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

			switch (CurrentWorkingState)
			{
				case WorkingState.AddNew:
					mailItem.Subject = daoMaskText.GetText("TextSubjectNewAccount", LanguageLibrary.GetCurrentLanguage());
					body.Append(daoMaskText.GetText("TextMessageNewAccount", LanguageLibrary.GetCurrentLanguage()) + Environment.NewLine + Environment.NewLine);
					break;
				case WorkingState.ResetPassword:
					mailItem.Subject = daoMaskText.GetText("TextSubjectNewPassword", LanguageLibrary.GetCurrentLanguage());
					body.Append(daoMaskText.GetText("TextMessageNewPassword", LanguageLibrary.GetCurrentLanguage()) + Environment.NewLine + Environment.NewLine);
					break;
			}

			body.Append(daoMaskText.GetText("TextUsername", LanguageLibrary.GetCurrentLanguage()) + ": '" + UserName + "'" + Environment.NewLine);
			body.Append(daoMaskText.GetText("TextPassword", LanguageLibrary.GetCurrentLanguage()) + ": '" + password + "'" + Environment.NewLine);
			mailItem.Body = body.ToString();
			mailItem.To = EmailAddress;
			mailItem.CC = ConfigurationManager.AppSettings["MailFrom"];

			mailItem.Display(false);
			try
			{
				mailItem.Send();
			}
			catch (Exception excep)
			{
				//[...]
			}
		}
	}
	catch (Exception ex)
	{
		//[...]
	}
}

Die Lösung ist immer ganz einfach.
Nur der Weg dorthin ist schwierig!

5.657 Beiträge seit 2006
vor 6 Jahren

Hi Brendan,

was meinst du mit verschlüsseln? PGP?

Weeks of programming can save you hours of planning

B
Brendan Themenstarter:in
39 Beiträge seit 2006
vor 6 Jahren

Hallo,

Ich wollte wissen, wie man bei Microsoft.Office.Interop.Outlook ein MailItem bzw. die zu versendende Mail verschlüsseln kann.
Wenn Du mir dabei weiterhelfen könntest.

Die Lösung ist immer ganz einfach.
Nur der Weg dorthin ist schwierig!

5.657 Beiträge seit 2006
vor 6 Jahren

Und ich wollte wissen, welche Art von Verschlüsselung du meinst. Wenn du das verrätst, dann können wir dir evtl. dabei weiterhelfen.

Oder anders gefragt: Wie willst du sicherstellen, daß der Empfänger die Nachricht auch entschlüsseln kann?

Weeks of programming can save you hours of planning

B
Brendan Themenstarter:in
39 Beiträge seit 2006
vor 6 Jahren

Hallo,

Tut mir leid, ich habe bisher keine Emailverschlüsselung per Code gemacht und bin was das angeht ein absolutes Greenhorn.
In der Zwischenzeit hatte ich auf https://stackoverflow.com/questions/10439418/programmatically-encrypt-outlook-email-using-inspector einen Codeschnipsel gefunden, den ich in meine Applikation einbaute, wobei ich nun noch das Problem habe, dass der Button zur Verschlüsselung disabled ist.
Ich hoffe, dass hierzu in meinem lokal installierten Outlook nichts angepasst werden muss.


        private void AddOutlookEncryption(ref Microsoft.Office.Interop.Outlook.MailItem mailItem)
        {
            try
            {
                CommandBarButton encryptBtn;
                mailItem.Display(false);
                encryptBtn = mailItem.GetInspector.CommandBars.FindControl(MsoControlType.msoControlButton, 718, Type.Missing, Type.Missing) as CommandBarButton;

                if (encryptBtn == null)
                {
                    //if it's null, then add the encryption button
                    encryptBtn = (CommandBarButton)mailItem.GetInspector.CommandBars["Standard"].Controls.Add(Type.Missing, 718, Type.Missing, Type.Missing, true);
                }

                encryptBtn.Enabled = true;

                if (encryptBtn.Enabled)
                {
                    if (encryptBtn.State == MsoButtonState.msoButtonUp)
                    {
                        encryptBtn.Execute();
                    }
                }

                mailItem.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose.olDiscard);
            }
            catch (Exception ex)
            {
                //[...]
            }
        }

Die Lösung ist immer ganz einfach.
Nur der Weg dorthin ist schwierig!

16.807 Beiträge seit 2008
vor 6 Jahren

Naja, das hier hört sich verdammt nach "Hey Leute, ich brauch das - macht mir das mal" an.
So läuft das natürlich nicht. Und so wie Du Dir E-Mail Verschlüsselung vorstellst, funktioniert das auch nicht.

Bei digital signierten E-Mails braucht nur der Sender ein entsprechendes S/MIME Zertifikat.
Das muss zuerst im Windows Certificate Store hinterlegt und dann in Outlook ausgewählt werden.
Sofern es sich um ein Trustes SMIME wie von Comodo handelt, hat der Empfängerin der Regel das Vertrauen zu Comodo und vertraut damit automatisch dem Root Trust und der E-Mail Signatur.

Bei einer E-Mail Verschlüsselung brauchen beide Seiten eine Digital ID. Ohne das funktioniert es nicht.
Die E-Mail wird dabei mit dem Public Key des Empfängers verschlüsselt, sodass der Leser mit seinem Private Key die Mail entschlüsseln kann.
Auch das muss manuell in den Trusted Settings von Outlook hinterlegt werden - nicht in der Mail Message.

Sind diese Requirements nicht gegeben, kannst Du keine Mails verschlüsseln oder entschlüsseln.
Da dies in 99,99999% aller Fälle nicht gegeben ist, ist es heute völlig normal - leider - Passwörter unverschlüsselt zu versenden.

Wollt ihr das nicht, dann empfiehlt es sich eher den Workflow anders zu gestalten, als dass das System Passwörter erstellt.
Es ist üblich, dass der Benutzer das selbst macht, damit eben das Passwort nicht über E-Mails laufen muss.

B
Brendan Themenstarter:in
39 Beiträge seit 2006
vor 6 Jahren

Hallo Abt,

Vielen Dank für Deine Erläuterungen.
Dadurch ist mir nun einiges klarer geworden.
In meinem Fall werde ich - leider - den Weg der Email-Verschlüsselung gehen müssen, da dies so gefordert ist.
Macht das Ganze natürlich etwas komplizierter, da meine Kunden dann die gleiche Digital ID wie ich haben müssen.

Anbei möchte ich mich entschuldigen, falls mein erstes Posting den Eindruck erweckt haben sollte, ich hätte keine Vorarbeit geleistet, sondern sofort eine Anfrage im Forum eingestellt.
Tatsächlich tue ich mir bereits seit ein paar Stunden die Finger wund googeln und habe auch schon zwei Varianten der Verschlüsselung ausprobiert, die mich aber nicht weiter gebracht haben.
Sorry!

Die Lösung ist immer ganz einfach.
Nur der Weg dorthin ist schwierig!

16.807 Beiträge seit 2008
vor 6 Jahren

Wie das Verschlüsseln läuft, welcher unreale Aufwand dahinter steht, findet man einfach in Google.
How to Encrypt Email in Outlook: The Hard Way and the Easy Way

Ich kenne ehrlich gesagt nicht ein Unternehmen, das so verschlüsselte Mails an Kunden verschickt.
Es macht im Kundenkontakt auch keinen Sinn, weil man erst mal die IDs austauschen muss - und das passiert im realen Leben so gut wie nie.

In meinem Fall werde ich - leider - den Weg der Email-Verschlüsselung gehen müssen, da dies so gefordert ist.

Was ist denn die genaue Forderung? Hört sich an, dass das jemand definiert hat, der sich damit nicht primär auskennt.
Normalerweise verschickt man eben aus diesen Gründen gar keine Passwörter, sondern der Kunde setzt sie auf der Seite direkt.

Es ist schließlich auch in Sachen Sicherheit keine gute Idee, dass ein System mit immer den gleichen Schritten ein Passworter erzeugt.
Das führt dazu, dass der Benutzer das nicht ändert und eine theoretische Lücke existiert.

Es ist besser und die best practise, dass man Regeln definiert nach Länge und Komplexität - aber dies nicht das System generiert.
Ich glaube, dass ihr euch mit so einem nicht wirklich gut durchdachten, unüblichen Workflow mehr Probleme schafft, als dass ihr sie löst.

Auch, dass ihr Outlook verwendet, um solche Mails zu verschicken, ist nicht gerade best practise.
Die API ist zudem als Obsolete markiert und wird vermutlich bald ganz abgeschafft.

W
195 Beiträge seit 2008
vor 6 Jahren

Ich kenne ehrlich gesagt nicht ein Unternehmen, das so verschlüsselte Mails an Kunden verschickt.
Es macht im Kundenkontakt auch keinen Sinn, weil man erst mal die IDs austauschen muss - und das passiert im realen Leben so gut wie nie.

Naja, nur weil Du das nicht kennst, bedeutet das nicht, dass sowas nicht stattfindet - im Unternehmen, für das ich tätig bin ist das alltägliche Praxis. Man tauscht ja auch in der Regel keine 'IDs' aus, sondern stellt dem Kommunikationspartner seinen public key zur Verfügung (bei uns gibt es den als Download auf unserer Website).

Normalerweise verschickt man eben aus diesen Gründen gar keine Passwörter, sondern der Kunde setzt sie auf der Seite direkt. ...

Keine Ahnung, wie Du jetzt auf Passwörter kommst - darum geht es doch hier überhaupt nicht...

@Brendan
Falls Du es noch nicht getan hast, würde ich mir an Deiner Stelle mal GPG4Win (https://www.gpg4win.de/) herunterladen und das ganze mit den Kunden mal ein bischen durchspielen. Vielleicht reicht es ja auch aus, Anhänge zu verschlüsseln, statt der ganzen Email. Hier würde sich dann OpenPGP anbieten, da gibt es mit BouncyCastle (https://www.bouncycastle.org/) eine sehr gute Bibliothek...

U
135 Beiträge seit 2009
vor 6 Jahren

Ich kenne ehrlich gesagt nicht ein Unternehmen, das so verschlüsselte Mails an Kunden verschickt.
Es macht im Kundenkontakt auch keinen Sinn, weil man erst mal die IDs austauschen muss - und das passiert im realen Leben so gut wie nie.

Naja, nur weil Du das nicht kennst, bedeutet das nicht, dass sowas nicht stattfindet - im Unternehmen, für das ich tätig bin ist das alltägliche Praxis. Man tauscht ja auch in der Regel keine 'IDs' aus, sondern stellt dem Kommunikationspartner seinen public key zur Verfügung (bei uns gibt es den als Download auf unserer Website).

Schön, dass Ihr Euren Public Key auf Eurer Website veröffentlicht... inwiefern soll Dir das nützen beim Mailversand AN den Kunden? 😉
Denn das war ja der Knackpunkt, den Abt angesprochen hat.... und da hat er IMHO Recht. Zu Deinem Argument "nur, weil Du das nicht kennst, bedeutet das nicht, dass sowas nicht stattfindet": er schrieb ja auch " so gut wie nie".

Versteh mich nicht falsch: wir nutzen PGP ebenfalls... aber zu 99,9% für B2B-Kommunikation... unser Public Key steht seit etwa 15 Jahren auf unserer Website. Die verschlüsselten Mails, die wir von Endkunden erhalten, kann ich an einer Hand abzählen... und verschlüsselt an Endkunden mailen? Tun wir gar nicht... weil der Aufwand des Schlüsselmanagements zu groß wäre. Daher gehen sensible Antworten per Briefpost raus. Ausnahme: De-Mail... aber da ist die Zahl, die wir von Endkunden erhalten, noch geringer, als bei PGP =)

W
195 Beiträge seit 2008
vor 6 Jahren

Schön, dass Ihr Euren Public Key auf Eurer Website veröffentlicht... inwiefern soll Dir das nützen beim Mailversand AN den Kunden? 😉

Das hab ich doch gar nicht geschrieben - meine Aussage bezieht sich auf den Sachverhalt, dass 'ID's' ausgetauscht werden müssen und dies als eine Art Hindernis dargestellt wird - ich wollte damit lediglich aufzeigen, dass dieser Prozess kaum eine ernsthafte Hürde sein kann...

Und zum Rest: Ich wollte lediglich darstellen, dass Abt IMHO viel zu stark pauschalisiert in seiner Aussage und dass es durchaus Branchen gibt, wo die Verschlüsselung der Kommunikation zwischen den Geschäftspartnern usus ist. Das von Dir angesprochene 'Schlüsselmanagement' ist letztendlich - was den Aufwand angeht - auch eine Frage der Routine und der eingesetzten Lösungen (bei uns zum Beispiel wird dafür nicht Outlook o.ä. eingesetzt, sondern eine spezielle Lösung die eben die Verwaltung der Schlüssel und den Prozess an sich stark vereinfacht).

Es ist aber müssig das hier zu diskutieren, weil es letztendlich immer von den Geschäftsfeldern und betrieblichen Abforderungen abhängt. Sensible Dinge per Briefpost zu verschicken ist nicht in jedem Fall möglich 😉

D
985 Beiträge seit 2014
vor 6 Jahren

Normalerweise verschickt man eben aus diesen Gründen gar keine Passwörter, sondern der Kunde setzt sie auf der Seite direkt. ...

Keine Ahnung, wie Du jetzt auf Passwörter kommst - darum geht es doch hier überhaupt nicht...

Ob es daran liegt, dass er die Beiträge des TE aufmerksam gelesen hat? 🤔

Nun möchte ich diese Mail - da sie ein Login für einen neuen User enthält - auch noch verschlüsseln - nicht signieren.
[...]

  
private void SendEmailWithNewPassword()  
{ ... }  
  
U
135 Beiträge seit 2009
vor 6 Jahren

Das hab ich doch gar nicht geschrieben - meine Aussage bezieht sich auf den Sachverhalt, dass 'ID's' ausgetauscht werden müssen und dies als eine Art Hindernis dargestellt wird - ich wollte damit lediglich aufzeigen, dass dieser Prozess kaum eine ernsthafte Hürde sein kann...

Der Austausch von „IDs“ (die man natürlich Public Key nennt) ist ein Hindernis... wenn dieser Prozess Deiner Ansicht nach keine Hürde darstellt bin ich auf Deine Erklärung gespannt, warum nicht längst sämtlicher eMail-Verkehr PGP-verschlüsselt abläuft.

Und zum Rest: Ich wollte lediglich darstellen, dass Abt IMHO viel zu stark pauschalisiert in seiner Aussage und dass es durchaus Branchen gibt, wo die Verschlüsselung der Kommunikation zwischen den Geschäftspartnern usus ist.

Ich erwähne es jetzt glaube ich insgesamt zum dritten Mal: weder der Eröffner des Threads, noch Abt, noch ich bezweifeln, dass Mailverschlüsselung im B2B-Umfeld usus ist. Es geht aber seit Beginn der Diskussion um die Kommunikation zwischen Unternehmen und Kunden.
Du Amazon, ich Lieschen Müller... ich schicke Dir eine Anfrage über das Kontaktformular auf Deiner Website und erwarte eine Antwort per Mail. Bin sehr gespannt, wie Du mir die verschlüsselt zukommen lassen wirst.

Offensichtlich hast Du weder den Post des TE (wie Sir Rufo ja bereits anmerkte) noch Abts, noch meinen Post gelesen. Insofern stimme ich Dir zu: die Diskussion ist irgendwie müßig. =)

W
195 Beiträge seit 2008
vor 6 Jahren

Lass mal gut sein - der TO wollte wissen, wie er Email's verschlüsseln kann. Da er sich nicht mehr gemeldet hat, scheint das ja geklärt - der Rest ist Zeitverschwendung. Ich bin jedenfalls raus...