2012-04-02 16 views
9

हमारे पास पुरानी विरासत एसक्यूएल 2000 सर्वर (खेत में अंतिम) है - हम इस सर्वर से छुटकारा पाने में असमर्थ रहे हैं क्योंकि यह मेलबॉक्स की निगरानी के लिए xp_findnextmsg, xp_readmail आदि का उपयोग करता है (मैपी के माध्यम से) और डेटाबेस में उस पते पर सभी ईमेल आयात करें। डेटाबेस में सरल टेबल होते हैं जो "से", "से", "विषय", "बॉडी", "प्रेषित तिथि" & स्टोर करते हैं।एडी मेलबॉक्स से ईमेल आयात करें

आपको बता दें कि, ऊपर procs अब उपयोग में एसक्यूएल में हैं 2005+

इस तालिका में उदाहरण ईमेल इस मेलबॉक्स के लिए स्वचालित रूप से हमारे हेल्पडेस्क सिस्टम के द्वारा उठाया जा सकता है के लिए आंतरिक प्रणालियों के दर्जनों, से पढ़ी जाती है & कॉल आदि बनाने

मेरा प्रश्न यह है: क्या यह एसक्यूएल 2008 + में ऐसा करने का सबसे आसान/आधुनिक तरीका है? क्या यह एक .NET बाइनरी/सेवा लिखने का मामला होगा जो मेलबॉक्स से कनेक्ट करने के लिए smtp या कुछ का उपयोग करेगा और डेटा को SQL में डालें या ऐसा करने का एक आसान तरीका है? (SSIS/3 पार्टी उपकरण/पूर्व मौजूदा कोड/परियोजनाओं?)

बस सोचा था कि मैं इससे पहले कि मैं कुछ लिख शुरू पूछना चाहते हैं - कोई मतलब पहिया फिर से खोज करने के रूप में यह थे।

पीएस: प्रश्न में मेलबॉक्स एक एक्सचेंज 2010 मेलबॉक्स है।

संपादित करें: यह कार्यक्षमता को फिर से शुरू किया जाना संकेत दिया था 2008 & dbmail में: http://connect.microsoft.com/SQLServer/feedback/details/126167/xp-readmail-replacement-for-sql-2005 लेकिन ऐसा लगता है यह अमल में लाना करने में विफल रहा लग रहा है!

संपादित 2: मैं बस एक सभ्य कोड नमूना है कि यहाँ 2007+ विदेशी मुद्रा में नई वेब सेवाओं का इस्तेमाल करता पाया है: - (? क्या कभी किसी ने एसक्यूएल और विनिमय वेब सेवाओं के साथ काम किया है) http://social.msdn.microsoft.com/forums/en-US/sqltools/thread/dd2b465b-b1d2-4c0d-82ec-c36c6c482d5d प्रगति में प्रयोग

संपादित 3: सभी कार्य पूर्ण! मैंने एक .net सेवा को खारिज कर दिया जो हमारे एक्सचेंज सर्वर पर बैठता है और मेलबॉक्स & पर निगरानी करता है SQL में कोई भी नया मेल धक्का देता है। दूसरों को एक समान प्रश्न है और शुरू करने के लिए कुछ नमूना कोड की आवश्यकता है - यहां कुछ मोटा कोड है (मेरी सेवा से कटा हुआ - आसान पढ़ने के लिए मूल गतिशील एसक्यूएल के साथ पैरामीटरयुक्त एसक्यूएल को प्रतिस्थापित किया गया है): (नोट: आपको ईडब्ल्यूएस एपीआई 1.1 की आवश्यकता होगी डीएल)

Imports Microsoft.Exchange.WebServices.Data 

Dim ExchangeUrl As String = "https://DOMAIN.co.uk/ews/exchange.asmx" 
Dim service As New ExchangeService(ExchangeVersion.Exchange2010_SP1) 
service.Url = New Uri(ExchangeUrl) 
service.Credentials = New WebCredentials("[email protected]", "PASSWORD") 
Dim findResults As FindItemsResults(Of Item) = service.FindItems(WellKnownFolderName.Inbox, New ItemView(1000)) 
If findResults.Count > 0 Then 
    service.LoadPropertiesForItems(findResults.Items, New PropertySet(BasePropertySet.FirstClassProperties)) 
End If 

For Each item As Item In findResults.Items 
    Dim CurrentEmail As EmailMessage = item 

    '#### Grab Email Information 
    E_ID = CurrentEmail.InternetMessageId.ToString() 
    If CurrentEmail.Sender.Address.ToString() <> "" Then 
     E_From = Replace(CurrentEmail.Sender.Address, "'", "''") 
    Else 
     E_From = Replace(CurrentEmail.Sender.Name, "'", "''") 
    End If 
    E_From = Replace(CurrentEmail.Sender.Address, "'", "''") 
    E_To = Replace(CurrentEmail.DisplayTo, "'", "''") 
    E_CC = Replace(CurrentEmail.DisplayCc, "'", "''") 
    E_Subject = Replace(CurrentEmail.Subject, "'", "''") 
    E_Body = Replace(CurrentEmail.Body.Text, "'", "''") 
    E_Received = CurrentEmail.DateTimeReceived.ToString("dd/MM/yyyy HH:mm:ss") 
    E_Sent = CurrentEmail.DateTimeSent.ToString("dd/MM/yyyy HH:mm:ss") 

    '#### Save the email into SQL 
    If SqlQuery("INSERT INTO tbl_Emails ([MessageID], [From], [To], [CC], [Subject], [Body], [Received], [Sent]) VALUES ('" & E_ID & "', '" & E_From & "', '" & E_To & "', '" & E_CC & "', '" & E_Subject & "', '" & E_Body & "', CONVERT(DATETIME, '" & E_Received & "', 103), CONVERT(DATETIME, '" & E_Sent & "', 103))") = True Then 
     item.Delete(DeleteMode.HardDelete) 
    End If 
Next 
+2

खुशी है कि सब कुछ आप के लिए बाहर काम किया। आपको संपादन 3 को एक उत्तर में ले जाना चाहिए ताकि लोग इसे वोट दे सकें :-) – EBarr

उत्तर

3

पहली बात जो मेरे लिए दिमाग में आती है वह एसक्यूएल सीएलआर है। एमएपीआई not specifically supported में .NET (कम से कम मेरे ज्ञान के लिए) है, हालांकि work arounds हैं। एक मुद्रा मेलबॉक्स से पढ़ना, सौभाग्य से, situations की host में समर्थित है।

Btw, मैं .net में ईमेल के साथ काम अपेक्षाकृत दर्द मुक्त होने के लिए मिल गया है।

+0

ईडब्ल्यूएस निश्चित रूप से जाने का तरीका प्रतीत होता है - उत्तर के रूप में अपनी प्रतिक्रिया निर्धारित करना। – HeavenCore

संबंधित मुद्दे