Вопрос

Я хотел бы отправить почту с помощью сценария в Windows Server 2003 Standard Edition.Я думаю, что настройка сервера в значительной степени нестандартна.

Почтовый сервер является сервером Exchange, и когда вы находитесь во внутренней сети, вы можете использовать старый добрый SMTP.Я сделал это на своей машине с помощью Perl, но, к сожалению, Perl недоступен на сервере.

Есть ли простой способ сделать это из .bat-файла или любым другим способом, не требующим установки дополнительного программного обеспечения?

Edit:
Спасибо за быстрые ответы.«Блат», вероятно, будет работать нормально, но с 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, вы сможете использовать CDONT, просто создайте файл 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 (WScript)

Есть ли способ отправить без ссылки на внешние URL-адреса схемы.http://schemas.microsoft.com/cdo/configuration/

Это совершенно бесполезно, поскольку нельзя предполагать, что все ящики будут иметь внешний доступ в Интернет для отправки почты внутри локального обмена.Есть ли способ сохранить информацию с этих URL-адресов локально?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top