سؤال

أرغب في إرسال بريد من برنامج نصي على Windows Server 2003 Standard Edition.أعتقد أن إعداد الخادم خارج الصندوق إلى حد كبير.

خادم البريد هو خادم Exchange، وعندما تكون على الشبكة الداخلية، يمكنك استخدام SMTP القديم العادي.لقد قمت بذلك من جهازي باستخدام لغة Perl، ولكن للأسف لغة Perl غير متوفرة على الخادم.

هل هناك طريقة سهلة للقيام بذلك من ملف .bat أو أي طريقة أخرى لا تتطلب تثبيت بعض البرامج الإضافية؟

Edit:
شكرا للردود السريعة.من المحتمل أن يعمل الشيء "blat" بشكل جيد ولكن مع wscript لا يتعين علي استخدام ثنائي منفصل.

لم أتمكن من رؤية مشاركة PhiLho في المرة الأولى التي قمت فيها بتحرير الإجابة وتحديدها.لا حاجة لي لتكرار الرمز هنا.

ما عليك سوى حفظ البرنامج النصي في ملف، مثل sendmail.vbs، ثم استدعائه من موجه الأوامر كما يلي:
wscript sendmail.vbs

هل كانت مفيدة؟

المحلول

من الممكن استخدام Wscript باستخدام CDO:

Dim objMail

Set objMail = CreateObject("CDO.Message")

objMail.From = "Me <Me@Server.com>"
objMail.To = "You <You@AnotherServer.com>"
objMail.Subject = "That's a mail"
objMail.Textbody = "Hello World"
objMail.AddAttachment "C:\someFile.ext"

---8<----- You don't need this part if you have an active Outlook [Express] account -----
' Use an SMTP server
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

' Name or IP of Remote SMTP Server
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
    "smtp.server.com"

' Server port (typically 25)
objMail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

objMail.Configuration.Fields.Update
----- End of SMTP usage ----->8---

objMail.Send

Set objMail=Nothing
Wscript.Quit

تحديث:وجدت المزيد من المعلومات هناك: VBScript لإرسال البريد الإلكتروني باستخدام CDOافتراضيًا، يبدو أنه يستخدم Outlook [Express]، لذا فهو لا يعمل على جهاز الكمبيوتر الخاص بي ولكن يمكنك استخدام خادم SMTP محدد، والذي كان يعمل بشكل جيد بالنسبة لي.

نصائح أخرى

لا أعرف ما إذا كان إسقاط ملف ثنائي إلى جانب ملف .bat يعد بمثابة تثبيت برنامج، ولكن إذا لم يكن الأمر كذلك، فيمكنك استخدام بلات لفعل هذا.

إذا حدث أن تم تثبيت Powershell v2 على الخادم (أدرك عمر هذا السؤال)، فسيقوم CmdLet Send-MailMessage بذلك في سطر واحد.

Send-MailMessage [-To] <string[]> [-Subject] <string> -From <string> [[-Body] <string>] [[-SmtpServer] <string>] [-Attachments <string[]>] [-Bcc <string[]>] [-BodyAsHtml] [-Cc <string[]>] [-Credential <PSCredential>] [-DeliveryNotficationOption {None | OnSuccess | OnFailure | Delay | Never}] [-Encoding <Encoding>] [-Priority {Normal | Low | High}] [-UseSsl] [<CommonParameters>]

إذا كان لديك Outlook/exchange مثبتًا، فمن المفترض أن تكون قادرًا على استخدام CDONTs، ما عليك سوى إنشاء ملف mail.vbs واستدعائه في ملف دفعي مثل ذلك (ممتع أنهما موجودان في نفس الدليل)

wscript mail.vbs

للتحقق من رمز VBScript

http://support.microsoft.com/kb/197920

http://www.w3schools.com/asp/asp_send_email.asp

انسَ حقيقة أن الرابطين يتحدثان عن ASP، فيجب أن يعمل بشكل جيد كبرنامج نصي مستقل بدون iis.

أعتقد أنه سيتعين عليك تثبيت بعض مكونات ActiveX أو مكونات أخرى يمكن استدعاؤها من WScript، مثل:http://www.activexperts.com/ActivEmail/و:http://www.emailarchitect.net/webapp/SMTPCOM/developers/scripting.asp

بخلاف ذلك، سيتعين عليك كتابة منطق SMTP بالكامل (إذا كان ذلك ممكنًا، لست متأكدًا) في WScript، كل ذلك بنفسك.

استخدم CDONTS مع Windows Scripting Host (WScript)

هل هناك طريقة لإرسالها دون الرجوع إلى عناوين URL للمخطط الخارجي.http://schemas.microsoft.com/cdo/configuration/

وهذا أمر عديم الفائدة إلى حد كبير لأنه لا يمكن الافتراض أن جميع الصناديق سيكون لها وصول خارجي إلى الإنترنت لإرسال البريد داخليًا في البورصة المحلية.هل هناك طريقة لحفظ المعلومات من عناوين URL هذه محليًا؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top