Einzelnen Beitrag anzeigen

Gerd01

Registriert seit: 18. Mär 2005
Ort: NRW
117 Beiträge
 
Delphi XE2 Professional
 
#1

Ersatz von Indy mit Visual Studio 2015 und Mimekit/Mailkit

  Alt 7. Dez 2016, 10:15
Indy hat für die Protokolle SMTP/POP3 und vor allen Dingen IMAP immer mehr verquaste Komponenten und einiges an Workaround ist erforderlich um Indy so zum Laufen zu bringen, das auch etwas komplexere Aufgaben zu erledigen. Wie so oft bei anderen Entwicklungen beobachtet, wird Indy immer mehr verschlimmbessert. Ein typisches Beispiel ist das Laden von Mail-Quelltexten (.eml) über einen Stream oder als File. Warum es manchmal klappt und dann wieder nicht ist nicht nachzuvollziehen. Nach meiner Beobachtung arbeitet man auch nicht mehr an der Weiterentwicklung.

Ich habe mir deshalb Visual Studio 2015 Community und hier speziell Mailkit/Mimekit angesehen und bin begeistert wie einfach man mit ein paar Zeilen cSharp-Code komplexe Aufgaben erledigen kann. Die DLL-s sind sauschnell und zuverlässig. Auch lassen Sie sich einfach von Delphi XE2 aufrufen.
Ich habe auch zum Beispiel cSharp genutzt um sehr elegant HTML-Code in PDF zu verwandeln. Hier das Beispiel:

Code:
using Microsoft.Win32;
using RGiesecke.DllExport;
using SelectPdf;
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Test
{
    public class gcCommon
    {

        [DllExport(CallingConvention = CallingConvention.StdCall)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static bool GeneratePdfFile
        (
        [param: MarshalAs(UnmanagedType.BStr)]string content,
        [param: MarshalAs(UnmanagedType.BStr)]string filename
        )
        {

            try
            {
                string pdf_page_size = PdfPageSize.A4.ToString();
                PdfPageSize pageSize = (PdfPageSize)Enum.Parse(typeof(PdfPageSize), pdf_page_size, true);

                string pdf_orientation = PdfPageOrientation.Portrait.ToString();
                PdfPageOrientation pdfOrientation = (PdfPageOrientation)Enum.Parse(typeof(PdfPageOrientation), pdf_orientation, true);

                 // instantiate a html to pdf converter object
                HtmlToPdf converter = new HtmlToPdf();

                // set converter options
                converter.Options.PdfPageSize = pageSize;
                converter.Options.PdfPageOrientation = pdfOrientation;
                converter.Options.MarginLeft = 35;
                converter.Options.MarginRight = 35;
                converter.Options.MarginTop = 20;
                converter.Options.MarginBottom = 20;
                //converter.Options.WebPageWidth = webPageWidth;
                //converter.Options.WebPageHeight = webPageHeight;

                // create a new pdf document converting an url
                SelectPdf.PdfDocument doc = converter.ConvertHtmlString(content);
                // save pdf document
                doc.Save(@filename);

                // close pdf document
                doc.Close();

            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            return true;
        }
    }
}
Wie wäre es, wenn wir hier eine Diskussion beginnen Teile von Delphi durch cSHarp sinnvoll zu ersetzen. Man kann bei Delphi bleiben, erweitert aber seinen Horizont ( und löst ganz einfach Aufgaben, die man in Delphi so nicht lösen kann).
Vielleicht kann Delphipraxis hierfür auch eine eigene Rubrik eröffnen? Interesse?
  Mit Zitat antworten Zitat