2012-07-20 18 views
9

मुझे पता है कि इस सवाल को विभिन्न संदर्भों में कुछ बार पूछा गया है, लेकिन मुझे स्पष्ट उत्तर नहीं मिला है। मेरे पास दृष्टिकोण का उपयोग कर एक एक्सेस एप्लिकेशन के लिए ईमेल लागू किया गया है, लेकिन मैं इससे दूर जाना चाहता हूं। ईमेल के प्रयोजनों में से एक यह है कि अगर वह इसे भूल गया तो उपयोगकर्ता को उसके पासवर्ड या पासवर्ड को ईमेल करना है। वे लॉगिन स्क्रीन के लिए अपना उपयोगकर्ता नाम चुन सकते हैं, और यदि वे 'पासवर्ड भूल गए' पर क्लिक करते हैं और ईमेल भेज दिया जाता है जिसमें उनकी लॉगिन जानकारी (उपयोगकर्ता नाम से जुड़े ईमेल पते पर) होती है।एमएस एक्सेस ईमेल भेजें (दृष्टिकोण या उपयोगकर्ता के ईमेल से नहीं)

इस समस्या के साथ यह है कि ईमेल फ़ंक्शन उपयोगकर्ता की मशीन से दृष्टिकोण के साथ एक ईमेल भेजता है। इसलिए, उपयोगकर्ता संवेदनशील जानकारी देखने के लिए अन्य उपयोगकर्ता नाम 'पासवर्ड भूल गए' और अपने स्वयं के आउटलुक आउटबॉक्स (भेजे गए आइटम) को देख पाएंगे।

क्या PHP से मेल फ़ंक्शन की तरह ई-मेल करने का कोई तरीका है, सर्वर से मेल भेज रहा है? मैं सुरक्षा संकेत के बाद उपयोगकर्ता के दृष्टिकोण पते के बजाय ईमेल को उसी ईमेल पते i.e ([email protected]) से भेजा जाना चाहता हूं। यदि यह संभव नहीं है, तो मैं किसी अन्य कामकाज के विचार के लिए खुला हूं।

मैं यह भी जोड़ दूंगा कि प्रत्येक संभावित उपयोगकर्ता की मशीन पर स्थापित होने वाले किसी भी सॉफ्टवेयर को स्थापित करना संभव नहीं है।

क्या यह संभव है?

+1

एक्सेस वास्तव में आप जो चाहते हैं वह नहीं कर सकते हैं। यह एक डेस्कटॉप डेटाबेस है। –

+0

मैं आसपास के काम के विचार के लिए खुला हूं: उदाहरण के लिए विचार वर्कअराउंड हो सकता है: उपयोगकर्ता के लिए दृष्टिकोण ईमेल ('से') डेटाबेस में उपयोगकर्ता नाम के लिए ईमेल से मेल खाता है तो केवल 'भूल गया पासवर्ड' ईमेल भेजें (सेवा मेरे)। – Scotch

+1

मैं एक्सेस कोड से वास्तव में परिचित नहीं हूं, लेकिन अगर कोई ऐसा फ़ंक्शन है जो किसी SMTP सेवा को मेल भेजता है तो आप उपयोगकर्ता के स्थानीय Outlook की बजाय किसी भी SMTP सेवा का उपयोग करने में सक्षम होना चाहिए। – David

उत्तर

10

विंडोज एक वस्तु सहयोगात्मक डाटा कहा जाता है शामिल हैं ऑब्जेक्ट्स या सीडीओ। यह ऑब्जेक्ट आपको किसी भी एसएमटीपी सर्वर का उपयोग करके ईमेल भेजने की इजाजत देता है, यह मानते हुए कि अन्य पूर्वापेक्षाएँ पूरी की जाती हैं (फ़ायरवॉल ओपन, आईएसपी बंदरगाहों को अवरुद्ध नहीं करता है, खाता एसएमटीपी सर्वर पर कॉन्फ़िगर किया गया है, एसएमटीपी सर्वर रिलेइंग इत्यादि की अनुमति देता है)।

मुझे मिले उदाहरणों में से अधिकांश देर से बाध्यकारी का उपयोग करते हैं, जिसे प्राथमिकता दी जाती है। XP पर मेरे परीक्षण में यह दिखाई दिया कि सही लाइब्रेरी संदर्भ, यदि आप प्रारंभिक बाध्यकारी का उपयोग करना पसंद करते हैं, तो "विंडोज 2000 लाइब्रेरी के लिए माइक्रोसॉफ्ट सीडीओ" है।

यह जानना महत्वपूर्ण है कि जब भी आप ईमेल भेजते हैं तो आपको इसे किसी प्रकार के ईमेल सर्वर (या बाहर) के माध्यम से भेजना होगा। इसका मतलब है कि आपको उस ईमेल सर्वर से प्रमाणीकरण करना होगा और आमतौर पर इसका मतलब है कि आपको उस ईमेल पते पर मौजूद "प्रेषक" ईमेल पते का उपयोग करके ईमेल भेजने की आवश्यकता है।

Const cdoSendUsingPickup = 1 
Const cdoSendUsingPort = 2 
Const cdoAnonymous = 0 
' Use basic (clear-text) authentication. 
Const cdoBasic = 1 
' Use NTLM authentication 
Const cdoNTLM = 2 'NTLM 

Public Sub SendEmail() 
    Dim imsg As Object 
    Dim iconf As Object 
    Dim flds As Object 
    Dim schema As String 

    Set imsg = CreateObject("CDO.Message") 
    Set iconf = CreateObject("CDO.Configuration") 
    Set flds = iconf.Fields 

    ' send one copy with SMTP server (with autentication) 
    schema = "http://schemas.microsoft.com/cdo/configuration/" 
    flds.Item(schema & "sendusing") = cdoSendUsingPort 
    flds.Item(schema & "smtpserver") = "mail.myserver.com" 
    flds.Item(schema & "smtpserverport") = 25 
    flds.Item(schema & "smtpauthenticate") = cdoBasic 
    flds.Item(schema & "sendusername") = "[email protected]" 
    flds.Item(schema & "sendpassword") = "password" 
    flds.Item(schema & "smtpusessl") = False 
    flds.Update 

    With imsg 
     .To = "[email protected]" 
     .From = "[email protected]" 
     .Subject = "Test Send" 
     .HTMLBody = "Test" 
     '.Sender = "Sender" 
     '.Organization = "My Company" 
     '.ReplyTo = "[email protected]" 
     Set .Configuration = iconf 
     .Send 
    End With 

    Set iconf = Nothing 
    Set imsg = Nothing 
    Set flds = Nothing 
End Sub 
+0

* उस ईमेल पते पर मौजूद "ईमेल" से * * - यह मेरे लोकेल में मेरे लिए काम नहीं करता है, और मेरे पढ़ने से मैं समझता हूं कि आपको अपने आईएसपी द्वारा प्रदान किए गए सर्वर का उपयोग करना होगा। यह रोकने के लिए है स्पैम। – Fionnuala

+0

यह सब सिर्फ आपके आईएसपी पर निर्भर करता है। कुछ केवल पोर्ट 25 को अपने स्वयं के एसएमटीपी सर्वर से बात करने के लिए इस्तेमाल करने की अनुमति देते हैं और कुछ में यह सीमा नहीं है। आपके कुछ बड़े केबल प्रदाता ऐसा करते हैं लेकिन आपके कई छोटे आईएसपी नहीं करते हैं इस सीमा को है। उदाहरण के लिए, न तो विंडस्ट्रीम या सेंचुरीलिंक में यह सीमा है। आप वैकल्पिक पोर्ट का उपयोग करके इसके आसपास भी जा सकते हैं (मान लें कि आपका एसएमटीपी सर्वर वैकल्पिक बंदरगाह का खुलासा कर रहा है) क्योंकि अधिकांश आईएसपी केवल पोर्ट 25 पर इस सीमा को लगाता है। इसका उदाहरण, आप संभवतः जीमेल को अपने एसएमटीपी सर्वर के रूप में उपयोग कर सकते हैं - जीमेल एसएसएल के साथ 587 या 465 का उपयोग करता है। – HK1

+0

मैं भी एक ही तरह की आवश्यकता पर काम कर रहा हूं और महसूस किया कि उपर्युक्त कोड आपको ईमेल से ईमेल भेजने देता है वाई ईमेल पता (यानी कोई गलत ईमेल [email protected]) और सही पासवर्ड निर्दिष्ट किए बिना। यह सिर्फ इतना है कि आपको सही सर्वर पता दर्ज करना चाहिए (यानी mail.myserver.com) – braceyourself

12

यह 2010/विंडोज 7

sMailServer = "myISPsmtp" 'Not just any old smtp 
sMailFromAddress = "me" 
sMailToAddress = "me" 

Set ObjMessage = CreateObject("CDO.Message") 
sToAddress = sMailToAddress 
sSubject = "Subject" 
sBody = "MailBody" 

ObjMessage.Subject = sSubject 
ObjMessage.From = sMailFromAddress 
ObjMessage.To = sToAddress 
'ObjMessage.cc = sCCAddress 
ObjMessage.TextBody = sBody 
'ObjMessage.AddAttachment sMailAttachment 
ObjMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
ObjMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = sMailServer 
ObjMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
ObjMessage.Configuration.Fields.Update 
ObjMessage.send 

एमएस एक्सेस में मेरे लिए काम करता और जानकारी: http://msdn.microsoft.com/en-us/library/ms526318(v=exchg.10).aspx

+0

तो क्या मैं बस अपने कार्यालय के ईमेल सर्वर पर एसमेल सर्वर स्थापित करूँगा? और मेलफ्रॉम एड्रेस जो डमी खाता बनता है? ('[email protected]') और smailTo डेटाबेस से उपयोगकर्ता नाम का ईमेल पता बनने के लिए? – Scotch

+1

+1 मैं बहुत धीमी हूं^_^लेकिन यह एक शानदार तरीका है। मैं इसके बजाय मेरी चिंताओं में से एक पर ध्यान केंद्रित करूंगा। आपको अपने डेटाबेस में अन-एन्क्रिप्टेड पासवर्ड संग्रहीत नहीं करना चाहिए, और निश्चित रूप से उस जानकारी को ई-मेल के माध्यम से नहीं भेजना चाहिए (भले ही सही व्यक्ति को भी)। इसके बजाय आपको अपने पासवर्ड एन्क्रिप्ट करने की आवश्यकता है और उपयोगकर्ता को इसे भेजने के बजाए अपना पासवर्ड रीसेट करने की क्षमता भी प्रदान करने की आवश्यकता है। –

+0

मुझे कोई मतलब नहीं है कि कौन सा मेल सर्वर आपके लिए काम करेगा, मुझे अपने आईएसपी द्वारा प्रदान किए गए सर्वर का उपयोग करना था, जाहिर है यह स्पैम को रोकने के लिए एक सुरक्षा उपाय है। – Fionnuala

2

मैं क्योंकि मैं पर्याप्त प्रतिष्ठा नहीं है टिप्पणी करने के लिए इस जोड़ नहीं सकते, इसलिए मुझे ax नहीं करते कृपया:

यहाँ कुछ लेट बाइंडिंग का उपयोग कर कोड है।

"लगता है इस विधि की तरह आप अपने सर्वर पर कुछ के बारे में धोखा। बस देखा एक addAttachment विधि उपलब्ध न हो। बस एक रिश्तेदार पथ के साथ कि काम कहने के लिए कर सकते हैं, एक एक्सेल शीट? देता है"

यह मेरे लिए काम करता है (एक्सेस 2010, Exchange 2010):

.AddAttachment ("यहाँ URL")

https://msdn.microsoft.com/en-us/library/ms526453(v=exchg.10).aspx https://msdn.microsoft.com/en-us/library/ms526983(v=exchg.10).aspx

1

निम्नलिखित एमएस एक्सेस VBA कोड काम smtp.office365.com के लिए एस।आप smtpusessl = true इंगित करते हैं, लेकिन आप पोर्ट निर्दिष्ट नहीं करते हैं, अन्यथा आपको त्रुटि 5.7.57 मिलती है।

Sub SMPTTest2() 
Set emailObj = CreateObject("CDO.Message") 

emailObj.From = "[email protected]" 
emailObj.To = "[email protected]" 
emailObj.Subject = "Test CDO" 
emailObj.TextBody = "Test CDO" 
'emailObj.AddAttachment "c:\windows\win.ini" 

Set emailConfig = emailObj.Configuration 


emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com" 
'Exclude the following line  
'emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" 
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword" 
emailConfig.Fields.Update 

emailObj.Send 

If Err.Number = 0 Then MsgBox "Done" 
End Sub 
0

मेरी कंपनी में मैंने एक अन्य समाधान का उपयोग किया। मैंने COM कक्षाओं/वस्तुओं के साथ एक सी # कक्षा पुस्तकालय बनाया है। COM कक्षाओं को आपके एक्सेस एप्लिकेशन में कार्यान्वित किया जा सकता है और इस तरह आप सी # (उदाहरण के लिए मेलिंग) के सभी फायदों का उपयोग कर सकते हैं और अभी भी एक्सेस में इसे कॉल कर सकते हैं (इसे कॉल कर सकते हैं)।

एकमात्र नुकसान यह है कि आपको अपने एक्सेस एप्लिकेशन का उपयोग करने वाले सभी कंप्यूटरों पर अपनी कक्षा लाइब्रेरी (डीएलएल) पंजीकृत करना होगा। मैंने इसे एक सरल पावर-शैल स्क्रिप्ट के साथ किया है जो एक्सेस एप्लिकेशन की शुरुआत में निष्पादित करता है।

एक COM आधारित पुस्तकालय के लिए एक अच्छी शुरुआत यहाँ है: https://www.codeproject.com/Articles/7859/Building-COM-Objects-in-C

आप इसके बारे में कुछ और जानकारी चाहते हैं, तो मैं हमेशा मदद करने के लिए खुश हूँ।