Send mail from a Windows script
Asked Answered
I

7

11

I would like to send mail from a script on a Windows Server 2003 Standard Edition. I think the server setup is pretty much out of the box.

The mail server is an Exchange one, and when you're on the internal network you can use plain old SMTP. I have done it from my machine with Perl, but unfortunately Perl is not available on the server.

Is there an easy way of doing this from a .bat-file or any other way that doesn't require installing some additional software?

Edit:
Thanks for the quick replies. The "blat" thingie would probably work fine but with wscript I don't have to use a separate binary.

I didn't see PhiLho's post the first time I edited and selected an answer. No need for me to duplicate the code here.

Just save the script to a file, say sendmail.vbs, and then call it from the command prompt like so:
wscript sendmail.vbs

Intracutaneous answered 30/9, 2008 at 9:8 Comment(0)
A
11

It is possible with Wscript, using CDO:

Dim objMail

Set objMail = CreateObject("CDO.Message")

objMail.From = "Me <[email protected]>"
objMail.To = "You <[email protected]>"
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

Update: found more info there: VBScript To Send Email Using CDO By default it seems it uses Outlook [Express], so it didn't worked on my computer but you can use a given SMTP server, which worked fine for me.

Adder answered 30/9, 2008 at 9:45 Comment(2)
Received a 'The server rejected the sender address...Must issue a STARTTLS command first.'Mamiemamma
@TomHoward Often, mail servers require you to do a POP3 request, authenticating the user, before issuing a SMTP request.Adder
G
8

If the server happened (I realize how old this question is) to have Powershell v2 installed, the CmdLet Send-MailMessage would do this in one line.

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>]
Graig answered 26/11, 2012 at 21:59 Comment(0)
F
6

I don't know if dropping a binary alongside the .bat file counts as installing software, but, if not, you can use blat to do this.

Fluorine answered 30/9, 2008 at 9:32 Comment(0)
T
1

If you have outlook/exchange installed you should be able to use CDONTs, just create a mail.vbs file and call it in a batch file like so (amusing they are in the same dir)

wscript mail.vbs

for the VBScript code check out

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

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

forget the fact they the two links speak about ASP, it should work fine as a stand alone script with out iis.

Trincomalee answered 30/9, 2008 at 9:37 Comment(1)
CDONTS is deprecated and replaced by CDOSYS. support.microsoft.com/default.aspx/kb/810702Jamshid
B
0

I think that you'll have to install some ActiveX or other component what could be invoked from WScript, such as: http://www.activexperts.com/ActivEmail/ and: http://www.emailarchitect.net/webapp/SMTPCOM/developers/scripting.asp

Otherwise, you'll have to write the entire SMTP logic (if possible, not sure) in WScript all on your own.

Branch answered 30/9, 2008 at 9:20 Comment(0)
Z
0

Use CDONTS with Windows Scripting Host (WScript)

Ziguard answered 30/9, 2008 at 9:44 Comment(0)
R
0

Is there a way you send without referencing the outside schema urls. http://schemas.microsoft.com/cdo/configuration/

That is highly useless as it can't be assumed all boxes will have outside internet access to send mail internally on the local exchange. Is there a way to save the info from those urls locally?

Runkel answered 9/3, 2011 at 18:42 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.