2012-01-27 2 views
23

Windows 2003 서비스 팩 2를 실행하고 있습니다. 요구 사항에 따라 실행되는 배치 파일이 있습니다. 배치 파일이 실행될 때마다 이메일을 보내고 싶습니다. 전자 메일은 간단합니다. 배치 파일이 실행되었음을 나타내는 문장입니다. 그것은 매번 동일합니다.Windows 배치 파일에서 간단한 전자 메일을 보내는 방법은 무엇입니까?

나는 이것을하기 위해 몇 가지 시도를 해왔다. 텔넷을 생각했지만 텔넷으로 명령 집합을 리디렉션하는 방법을 알 수 없습니다. Windows 배치 파일에는 유닉스 스타일의 "여기 문서"가 없으며 "telnet <scriptfile"을 호출합니다. 스크립트 파일에 전자 메일 보내기 명령이 들어있는 경우 작동하지 않습니다. CDO.Message를 사용하여 인터넷에서 몇 가지 솔루션을 찾았지만 이전에는 사용 해본 적이 없으며 이해하지 못하는 오류 메시지가 계속 나타납니다.

Windows 배치 파일에서 간단한 이메일을 보내려면 어떻게해야합니까?

+0

[This] (http://www.msexchange.org/articles/sending-email-without-client.html)가 도움이 될 수 있습니다. 명령 줄에서 또는 텔넷을 사용하여 수행하는 방법을 설명합니다 – vaichidrewar

+0

디렉터리 \ Inetpub \ mailroot \ pickup이 없으므로 픽업 방법이 작동하지 않습니다. 컴퓨터에 소프트웨어를 설치할 수 없으므로 blat 메서드가 작동하지 않습니다. 이 작업을 수동으로하고 싶지 않으므로 텔넷 방법이 작동하지 않습니다. 그리고 ASP가 없기 때문에이 방법은 효과가 없습니다. 다른 아이디어? – user448810

+0

[Batch 파일에서 메일 보내기] (0120-385-301) –

답변

14

Max는 컴퓨터에 추가 실행 파일을 설치하지 않고 Windows Scripting을 사용하라는 제안과 함께 올바른 길을 가고 있습니다.그의 코드는 "스마트 호스트"설정을 사용하여 아웃 바운드 전자 메일을 전달하도록 IIS SMTP 서비스를 설정하거나 Microsoft Exchange를 실행하는 시스템에서도 작동합니다. 그렇지 않으면이 메시지가 구성되지 않으면 메일 대기열 폴더 (\ inetpub \ mailroot \ queue)에 메일이 누적되어 있습니다. 따라서이 서비스를 구성 할 수 없으면 메시지를 보내는 데 사용할 전자 메일 서버를 지정할 수 있기를 원합니다. 이를 위해, 당신은 당신의 창 스크립트 파일에서이 같은 작업을 수행 할 수 있습니다

Set objMail = CreateObject("CDO.Message") 
Set objConf = CreateObject("CDO.Configuration") 
Set objFlds = objConf.Fields 
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'cdoSendUsingPort 
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.your-site-url.com" 'your smtp server domain or IP address goes here 
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 'default port for email 
'uncomment next three lines if you need to use SMTP Authorization 
'objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "your-username" 
'objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "your-password" 
'objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdoBasic 
objFlds.Update 
objMail.Configuration = objConf 
objMail.FromName = "Your Name" 
objMail.From = "[email protected]" 
objMail.To = "[email protected]" 
objMail.Subject = "Email Subject Text" 
objMail.TextBody = "The message of the email..." 
objMail.Send 
Set objFlds = Nothing 
Set objConf = Nothing 
Set objMail = Nothing 
+0

이것은 작동합니다. 고맙습니다! 그리고 응답 한 다른 모든 사람들에게 감사드립니다. – user448810

12

나는 수년간 Blat (http://www.blat.net/)를 사용 해왔다. 명령 줄에서 전자 메일을 보낼 수있는 간단한 명령 줄 유틸리티입니다. 무료이며 opensource입니다.

는 당신은 "6000 -port BLAT MYFILE.TXT -to [email protected] -server smtp.domain.com"와 같은 명령을 사용할 수 있습니다

여기

는 명령 줄에서 이메일을 보내려고 수있는 몇 가지 다른 소프트웨어 (내가 그들을 사용한 적이) : 여기
http://caspian.dotconf.net/menu/Software/SendEmail/
http://www.petri.co.il/sendmail.htm
http://www.petri.co.il/software/mailsend105.zip
http://retired.beyondlogic.org/solutions/cmdlinemail/cmdlinemail.htm

(http://www.petri.co.il/send_mail_from_script.htm)은 자체의 다른 다양한 방법을 찾을 수 있습니다 다음 VBScript 코드가 해당 페이지

Set objEmail = CreateObject("CDO.Message") 
objEmail.From = "[email protected]" 
objEmail.To = "[email protected]" 
objEmail.Subject = "Server is down!" 
objEmail.Textbody = "Server100 is no longer accessible over the network." 
objEmail.Send 

저장

Set Msg = CreateObject("CDO.Message") 

With Msg 

.To = "[email protected]" 
.From = "[email protected]" 
.Subject = "Hello" 
.TextBody = "Just wanted to say hi." 
.Send 

End With 

저장을 something.vbs의 파일에서 가져옵니다 언급 된 소프트웨어

의 일부에 VBS 스크립트에서 이메일, 플러스 링크를 웍 파일이 something2.vbs로

나는이 VBS 스크립트가 존재하는 경우 Windows 기본 메일 서버를 사용한다고 생각합니다. 이 스크립트를 테스트하지 않았습니다 ...

+0

서버에 opensource 소프트웨어를 넣을 수 없다고 생각합니다. 문제의. 나는 시도 할 것이다. 다른 제안이 있으십니까? – user448810

+1

감사합니다. 이것은 치료를했습니다! @ user448810 소프트웨어의 무결성이 문제가되는 경우 직접 확인하고 컴파일하십시오. 설치를 할 필요가 없으며 경로에 넣고 필요할 때 사용할 수 있습니다. – Impulss

+0

또는 심지어 스크립트와 같은 디렉토리에 blat.exe를 넣으십시오 ... –

0

서버에 Blat (또는 다른 유틸리티)을 설치하라는 Max의 제안을 따르지 않으면 서버에 이미 전자 메일을 보낼 수있는 소프트웨어가 설치되어있을 수 있습니다.

Oracle과 SqlServer 모두 전자 메일을 보낼 수 있다는 것을 알고 있습니다. 해당 기능을 사용 가능하게하거나 사용 권한을 얻으려면 DBA와 협력해야 할 수도 있습니다. 물론 그게 어떻게 문제와 빨간 테이프를 보여줄 수 있는지 알 수 있습니다. 이 기능에 액세스 할 수 있다고 가정하면 배치 파일을 데이터베이스에 로그인하고 메일을 보내는 것이 매우 간단합니다.

배치 파일은 CSCRIPT를 통해 VBScript를 쉽게 실행할 수 있습니다. 빠른 google 검색은 VBScript를 사용하여 이메일을 보내는 방법을 보여주는 많은 링크를 찾습니다. 내가 처음 보았던 것은 http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/enterprise/mail/이었습니다. 그것은 곧장 보인다.

+0

SqlServer가 컴퓨터에 설치되어 있습니다. 그 옵션을 살펴 보겠습니다. 감사. 그 동안 다른 제안은 여전히 ​​감사하게 받아 들여질 것입니다. – user448810

+0

@ user448810 - 네, 저는 제 대답에 VBScript를 추가했습니다. 자바 스크립트로도 가능합니다. – dbenham

1

을 PowerShell을 사용할 수있는 경우 Send-MailMessage 커맨드 쉽게로 배치 파일에서 호출 할 수있는 단일 한 줄 명령입니다 이메일 알림을 처리합니다. 다음은 PowerShell 스크립트를 호출하기 위해 배치 파일에 포함시킬 줄의 예제입니다 (%xVariable%은 일괄 처리 파일에서 PowerShell 스크립트로 전달할 수있는 변수입니다).

- [BATCH FILE] - 아래

:: ...your code here... 
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -command C:\MyScripts\EmailScript.ps1 %xVariable% 

당신이 당신의 PowerShell 스크립트에 포함 할 수 있습니다 무엇의 예입니다 (당신은 당신이 당신의 배치 파일에서 %xVariable%을 전달 포함 된 경우 스크립트의 첫 비 발언 라인으로 PARAM 라인을 포함해야합니다 :

- [POWERSHELL SCRIPT] -

Param([String]$xVariable) 
# ...your code here... 
$smtp = "smtp.[emaildomain].com" 
$to = "[Send to email address]" 
$from = "[From email address]" 
$subject = "[Subject]" 
$body = "[Text you want to include----the <br> is a line feed: <br> <br>]"  
$body += "[This could be a second line of text]" + "<br> " 

$attachment="[file name if you would like to include an attachment]" 
send-MailMessage -SmtpServer $smtp -To $to -From $from -Subject $subject -Body $body -BodyAsHtml -Attachment $attachment -Priority high 
+0

쉽게 읽을 수 있으며 잘 작동합니다. 평문 메시지의 경우 ('-BodyAsHtml' 인자가없는) 개행 문자는'\'n' 또는'\'r \'n'으로 표시됩니다. – miroxlav

관련 문제