2010-07-22 12 views
5

में आरटीएफ पाठ के साथ एक ई-मेल भेजें, मैं निम्नलिखित कार्य करना चाहता हूं: एक TRIEDit सामग्री (एक आरटीएफ टेक्स्ट) को एक सादे-पाठ ई-मेल संदेश निकाय में परिवर्तित करना।डेल्फी

एमएपीआई आरटीएफ का समर्थन नहीं करता है, लेकिन क्या इंडी के साथ ऐसा करने का कोई तरीका है?

समस्या यह है कि आरटीएफ आरटीएफ है और ईमेल सादे पाठ या HTML हैं।

क्या कोई चाल चल सकता है? क्या TWebBrowser का उपयोग कर आरटीएफ को पाठ में परिवर्तित करना संभव है?

मूल रूप से परिदृश्य है:
1) उपयोगकर्ता एक डेल्फी के रूप में ईमेल लिखते हैं,
2) ईमेल तो डिफ़ॉल्ट मेल क्लाइंट (ताकि एक नया ईमेल खिड़की उत्पन्न होता है, और संदेश के मुख्य भाग को MAPI साथ भेजा जाता है एक ही डेल्फी के रूप में मैं था)
3) उपयोगकर्ता मेल क्लाइंट

से ईमेल भेजता है वैसे भी MAPI केवल सादा पाठ को स्वीकार करता है।

अद्यतन:

इंडी साथ कोशिश कर रहा यह लिखा है लेकिन अभी भी यह काम नहीं करता, के रूप में मैं अपने जीमेल खाते में एक मेल भेज देते हैं मैं खाली शरीर और NONAME नकली अटैचमेंट वाला कोई संदेश प्राप्त।

uses IdMessageBuilder; 


procedure SendMail; 
var 
    MBuilder: TIdMessageBuilderRtf; 
    MyMemoryStream: TMemoryStream; 
begin 
    try 
    MBuilder := TIdMessageBuilderRtf.Create; 
    MyMemoryStream := TMemoryStream.Create; 
    MBuilder.RtfType := idMsgBldrRtfRichtext; 
    // RichEdit1 has PlainText set to False 
    // at design time I pasted some formatted text onto it 
    RichEdit1.Lines.SaveToStream(MyMemoryStream); 
    MBuilder.Rtf.LoadFromStream(MyMemoryStream); 
    MBuilder.FillMessage(IdMessage1); 
    IdSMTP1.Connect; 
    IdSMTP1.Send(IdMessage1); 
    IdSMTP1.Disconnect; 
    finally 
    MyMemoryStream.Free; 
    MBuilder.Free; 
    end; 
end; 

उत्तर

1

जाहिर है (यह अपने आप googled, जैसा कि मैंने डेल्फी से कुछ मेल, लेकिन इस मामले में नहीं), के (विस्तारित) MAPI PR_RTF_COMPRESSED विकल्प आपको यहाँ मदद मिल सकती है। this पर भी देखें।

+0

मैं MAPI का उपयोग बंद करना चाहते हैं, मैं पसंद करेंगे idSMTP के माध्यम से ईमेल भेजा करने के लिए सीधे – LaBracca

7

इंडी आरटीएफ ईमेल भेजने का समर्थन करता है। एक ईमेल भेजें जैसे ही आप एक HTML ईमेल भेजेंगे, बस "टेक्स्ट/आरटीएफ", "टेक्स्ट/समृद्ध", या "टेक्स्ट/समृद्ध टेक्स्ट" संदर्भ-प्रकार का उपयोग करें, और कच्चे आरटीएफ कोड भेजें जो TRichEdit द्वारा उत्पन्न होते हैं इसकी PlainText संपत्ति झूठी पर सेट है। इसके अलावा, यदि आप इंडी 10 का उपयोग कर रहे हैं, तो TIdMessageBuilderRtf क्लास को TIdMessage संरचना को सही तरीके से सेट अप करने के लिए देखें।

+0

वहाँ एक उदाहरण दिखाता है कि कैसे करना है है? मैंने इसके साथ प्रयास किया लेकिन मुझे एक गलत संदेश मिला: प्रक्रिया SendMailRtf; var MBuilder: TIdMessageBuilderRtf; एमबीयूल्डर शुरू करें: = TIdMessageBuilderRtf.Create; एमबीयूल्डर। आरटीएफ टाइप: = idMsgBldrRtfRichtext; एमबीयूल्डर। आरटीएफ: = RichEdit1.Lines; // reichedit MBuilder.FillMessage (IdMessage1) से आरटीएफ हो जाता है; एमबीयूल्डर। फ्री; आईडीएसएमटीपी 1। कनेक्ट; IdSMTP1.Send (IdMessage1); आईडीएसएमटीपी 1। डिस्कनेक्ट; अंत; – LaBracca

+0

आपके लिए एक उदाहरण खोजने का प्रयास किया। एक नहीं मिला, लेकिन किसी ऐसे समाधान को मिला जो एक ही समाधान की तलाश में था। Http://www.nldelphi.com/forum/showthread.php?t=15822 पर एक नज़र डालें। (डच में: Google अनुवाद आपका मित्र हो सकता है)। वे jvRichEditToHTML का भी उल्लेख करते हैं। – Tobiasopdenbrouw

+0

TRichEdit.Lines प्रॉपर्टी आरटीएफ ईमेल के लिए आवश्यक आरटीएफ कोड तक पहुंच प्रदान नहीं करती है। TRichEdit.PlainText प्रॉपर्टी को गलत पर सेट करें और इसके बजाय TRichEdit.SaveToStream() विधि को कॉल करें, और उसके बाद परिणामस्वरूप TStream को TIdMessageBuilderRtf.RTF.LoadFromStream() विधि पर पास करें। –

1

क्या TWBBrowser का उपयोग कर आरटीएफ को पाठ में परिवर्तित करना संभव है?

आप TRichEdit का उपयोग कर पाठ आरटीएफ में बदल सकते हैं - लेकिन स्पष्ट रूप से यह सभी स्वरूपण खो देता है:

Using TRichEdit at runtime without defining a parent

2: आप कन्वर्टर्स ऑनलाइन HTML में आरटीएफ के एक नंबर मिल सकता है - कुछ नि: शुल्क है, कुछ नहीं । इन की तरह:

http://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvRichEditToHtml https://www.habarisoft.com/scroogexhtml_delphi.html http://www.easybyte.com/products/rtf2html.html

http://www.sautinsoft.com/products/rtf-to-html/index.php

3: आप NONAME.MHT रूप noname लगाव नाम बदल सकते हैं और यह तब इंटरनेट एक्सप्लोरर के साथ खुलने वाला होना चाहिए।

हालांकि आप TRichEdit की बजाय HTML संपादन नियंत्रण का उपयोग करने पर विचार करना चाहेंगे। तब आपके पास चिंता करने के लिए कोई रूपांतरण नहीं है।इस सवाल की तरह कुछ: -

WYSIWYG HTML Editor Component for Delphi

+0

@ डाउनवॉटर: क्या यह नोनाम मुद्दा था, या कुछ और? मुझे बताएं ... – Roddy

+0

मजेदार आपने मेरे प्रश्न को लिंक किया है (रनटाइम पर ट्रिकहेडिट का उपयोग ...) – LaBracca

+2

@ user193655 - आह, हाँ :) मुझे लगता है कि आपकी समस्या यह है कि जीमेल (और कई अन्य ग्राहक) ईमेल में आरटीएफ का समर्थन नहीं करते हैं , इसलिए एचटीएमएल में रूपांतरण * केवल * तरीका है। क्या आपने उन आरटीएफ में से किसी भी एचटीएमएल कन्वर्टर्स को देखा है? – Roddy