Laden...

Forenbeiträge von BlacksGood Ingesamt 1 Beiträge

24.02.2021 - 12:50 Uhr

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 = "user@server.de";
            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