2011-08-12 11 views
13

का उपयोग कर DELPHI (इंडी) से जीमेल आउटगोइंग एसएमटीपी का उपयोग करना मैं बिना किसी समस्या के पोर्ट 25 पर एसएमटीपी क्लाइंट का उपयोग करके ईमेल भेजने के लिए इंडी का उपयोग कर रहा हूं।टीएलएस

अब मुझे जीमेल खाते का उपयोग करके एक ईमेल भेजने की जरूरत है और इसके लिए मुझे टीएलएस का उपयोग करने की आवश्यकता है।

कोई भी ऐसा करने के तरीके पर एक सरल नमूना प्रदान कर सकता है।

धन्यवाद

+1

शीर्ष परिणाम का पता चलता है: (http [जीमेल इंडी उपयोग करने के लिए मेल भेजें]: //www.marcocantu.c ओम/टिप्स/oct06_gmail.html) –

+1

मैंने अतीत में मार्को कैंटू की मार्गदर्शिका का उपयोग किया है: http://www.marcocantu.com/tips/oct06_gmail.html – berndvf

उत्तर

6

इस कोड को जीमेल के लिए काम करता है:

begin 
    IDSMTP1 := TIDSMTP.Create; 
    IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create; 
    try 

    with IDSMTP1 do 
    begin 
     Host := srvr.Host; 
     Port := srvr.Port; 
     if (srvr.needAuthentication = 'Y') then 
     AuthType := satDefault 
     else 
     AuthType := satNone; 
     IOHandler := IdSSLIOHandlerSocketOpenSSL1; 

     if (srvr.secureMode = 'Y') then 
     UseTLS := utUseRequireTLS 
     else 
     UseTLS := utNoTLSSupport; 

     Username := srvr.Username; 
     Password := srvr.Password; 
    end; 

    idMBHTML := TIdMessageBuilderHTML.Create; 
    Idmessage1 := TIDMessage.Create; 

    try 
     with idMBHTML do 
     begin 
     enc := TEncoding.Unicode; 
     HTML.LoadFromStream(FEmlMsg.MsgBody, enc); 
     for c := 0 to FEmlMsg.Attachmnts.Count - 1 do 
      Attachments.Add(FEmlMsg.Attachmnts[c]); 
     FillMessage(IDMessage1); 
     end; 

     with Idmessage1 do 
     begin 
     Subject := FEmlMsg.MsgSubject; 
     From.Address := FEmlMsg.FromAddress; 
     From.Name := FEmlMsg.FromName; 
     Recipients.EMailAddresses := FEmlMsg.RecipientAddress; 
     if FEmlMsg.ReceiptRecipientAddress <> '' then 
      ReceiptRecipient.Address := FEmlMsg.ReceiptRecipientAddress; 
     if FEmlMsg.ReceiptRecipientName <> '' then 
      ReceiptRecipient.Name := FEmlMsg.ReceiptRecipientName; 
     end; 

     with IDSMTP1 do 
     begin 
     if not Connected then 
      Connect; 
     Send(IdMessage1); 
     end; 

    finally 
     Idmessage1.Free; 
     idMBHTML.Free; 
    end; 
    finally 
    IDSMTP1.Free; 
    IdSSLIOHandlerSocketOpenSSL1.Free; 
    end; 
end; 
+0

ने स्वयं का परीक्षण किया है? मुझे कनेक्ट करने में त्रुटि मिलती है: संदेश के साथ EIdOSSLCouldNotLoadSSLLibrary 'एसएसएल लाइब्रेरी लोड नहीं कर सका।' – DRokie

+0

सुनिश्चित करें कि आप इंडी के अपने संस्करण के लिए ओपनएसएसएल डीएलएल के सही संस्करण का उपयोग कर रहे हैं। ओपनएसएसएल का कौन सा हिस्सा लोड करने में असफल रहा यह निर्धारित करने के लिए इंडी के 'जोफेल टोलोड()' फ़ंक्शन का उपयोग करें। –

+0

उपरोक्त वर्णित रेमी के रूप में, आपको अपने आवेदन के साथ ओपनएसएसएल डीएलएल फाइलों को शामिल करना होगा। वे उसी फ़ोल्डर में होना चाहिए जैसे एप्लिकेशन निष्पादन योग्य है या सिस्टम पथ में होना चाहिए (उदाहरण के लिए System32 फ़ोल्डर)। आप इंडी वेबसाइट से नवीनतम फाइलें डाउनलोड कर सकते हैं। –

1

आप IdSSLIOHandler काम करने के लिए एसएसएल dll की जरूरत है।

Indy SSL Website में जानकारी है जो आप Fulgan Download Site

को अनुप्रेषित आप अपने मंच के लिए उपयुक्त एक पैकेज डाउनलोड करें और फिर अपने आवेदन के साथ 2 DLLs शामिल कर सकते हैं नहीं है। मैं खुद को 2 वर्षों से ईमेल के माध्यम से मेल भेजने के लिए इंडी घटकों के साथ उस 2 डीएल का उपयोग कर रहा हूं। एकमात्र समस्या यह है कि भेजने काफी धीमी है।

0

आप यह नहीं कहें कि इंडी का कौन सा संस्करण आप उपयोग कर रहे हैं। उपयोग के लिए टीएसएल (हॉटमेल/जीमेल में अंतिम सुरक्षा परिवर्तन) आपको इंडी 10 का उपयोग करने की आवश्यकता है।

description here देखें।

असल में वाई इस configuraction का उपयोग जीमेल का उपयोग कर मेल भेजने के लिए और इसे सही ढंग से काम:

  • MailServer = smtp.gmail.com
  • PortServer = 465
  • [email protected] (समान मेल) के लिए "इंडी + smtp + जीमेल" गूगल पर
  • SSLMethod = sslvTLSv1