Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Mailprogramm mit Sonderzeichenfehler
BlacksGood
myCSharp.de - Member



Dabei seit:
Beiträge: 1

Themenstarter:

Mailprogramm mit Sonderzeichenfehler

beantworten | zitieren | melden

Moin Moin,

eins kurz vor weg. Ich hab wenig Ahnung von der PRogrammierung mit C# und frage im Prinzip für eine Kollegin.

Wir haben ein kleines Programm geschrieben, welches Mails versendet. Das Ganze funktioniert auch ohne Probleme.
Das einzige was einfach nicht gehen möchte, ist die richtige Kodierung, aber das nur, wenn der Empfänger gmx.de oder web.de ist.

Als Beispiel wird bei web.de/gmx.de aus dem Text „ Test öäüß „ --> „ Test öäüß “.

Sobald der Empfänger jedoch Outlook oder zB. Freenet benutzt, ist alles in Ordnung.

Hat irgendjmd. eine Ahnung, was wir von unserer Seite tun können, damit auch die Mails bei web.de/gmx.de richtig dargestellt werden?

Hier noch der Code des Programmteils, der für die Maileinstellungen verantwortlich ist:



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

namespace Test_Mail_EmailProcessor
{
   

    public class EmailProcessor
    {

        private MailMessage _message;

        private SmtpClient _smtpClient;

       

        public void SendEmail(object userToken, MailAddress from, MailAddress[] to, MailAddress[] cc, MailAddress[] bcc, string subject, string body, MailPriority priority, Attachment[] attachments)
        {
            var smtpHost = "smtp.server.de";
            var enableSsl = true;
            var smtpPort = 587;
            var smtpUsername = "[email protected]";
            var smtpPassword = "PASSWORT";

            if (string.IsNullOrEmpty(smtpHost) || null == enableSsl || string.IsNullOrEmpty(smtpPort.ToString()))
            {
                throw new ApplicationException(@"SendEmail: Failed intitializing the ""Smtp Host"" and/or ""Smtp Port"" and/or ""Enable Ssl"" parameters from the settings!");
            }

            _message = new MailMessage
            {
                From = from,
                Sender = from,
                Priority = priority,
                Subject = subject,
                Body = body,
                BodyEncoding = System.Text.Encoding.UTF8,
                SubjectEncoding = System.Text.Encoding.UTF8,
                HeadersEncoding = System.Text.Encoding.UTF8,
                IsBodyHtml = false
            };
            foreach (var recipient in to)
            {
                _message.To.Add(recipient);
            }
            foreach (var recipient in cc)
            {
                _message.CC.Add(recipient);
            }
            foreach (var recipient in bcc)
            {
                _message.Bcc.Add(recipient);
            }
            if (attachments != null)
            {
                foreach (var attachment in attachments)
                {
                    _message.Attachments.Add(attachment);
                }
            }

            

            if (!string.IsNullOrEmpty(smtpUsername) && !string.IsNullOrEmpty(smtpPassword))
            {
                _smtpClient = new SmtpClient()
                {
                    Host = smtpHost,
                    Port = (int) smtpPort,
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                    UseDefaultCredentials = false,
                    Credentials = new NetworkCredential(smtpUsername, smtpPassword),
                    EnableSsl = (bool) enableSsl
                };
            }
            else
            {
                _smtpClient = new SmtpClient()
                {
                    Host = smtpHost,
                    Port = (int) smtpPort,
                    UseDefaultCredentials = true,
                    EnableSsl = (bool) enableSsl
                };
            }

            _smtpClient.SendCompleted += SendCompletedCallback;
            _smtpClient.Send(_message.From.ToString(),_message.To.ToString(),_message.Subject,_message.Body);


        }

        public Action<object, Exception> OnSendCompleted { get; set; }

        void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
        {
            if (_smtpClient != null)
            {
                _smtpClient.Dispose();    
            }
            if (_message != null)
            {
                _message.Dispose();
            }

            if (OnSendCompleted != null)
            {
                OnSendCompleted(e.UserState, e.Error);
            }
        }
    }
}



Vielen Dank im Voraus und liebe Grüße
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15618
Herkunft: BW

beantworten | zitieren | melden

1) Bitte Code Tags verwenden. Niemand hat bock plaintext Code zu lesen, siehe [Hinweis] Wie poste ich richtig?. Bitte editier Deinen Beitrag.
2) Mit Code Review hat das Thema nichts zutun; ich habs in den richtigen Forenbereich verschoben
3) System.Net.Mail soll man schon lange nicht mehr verwenden; steht auch ein dicker fetter Hinweis in den Docs.

SmtpClient Class (System.Net.Mail)
Zitat
We don't recommend that you use the SmtpClient class for new development because SmtpClient doesn't support many modern protocols. Use MailKit or other libraries instead. For more information, see SmtpClient shouldn't be used on GitHub.


Alternativen: https://github.com/jstedfast/MimeKit zusammen mit https://github.com/jstedfast/MailKit
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1796
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Es gibt sonst noch BodyTransferEncoding, was ihr nicht gesetz habt.
Ggf. fehlt das noch, ansonsten gilt Abts Hinweis.
Für eine komplette Neuentwicklung würde ich auch von dem SmtpClient abraten.

MailMessage.BodyTransferEncoding Property (System.Net.Mail)

T-Virus
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T-Virus am .
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.
private Nachricht | Beiträge des Benutzers