2013-12-14 3 views
-1

Я делаю программу с использованием партии, а после сбоя или ошибки она сделает текстовый файл с именем debug.txt. Мне нужно знать, есть ли способ отправить этот файл по электронной почте автоматически с помощью пакета на следующий адрес электронной почты «[email protected]». debug.txt находится в том же месте, что и командный файл. Кто-нибудь знает код, который я мог бы использовать. У него не должно быть никакого дополнительного мягкого.Пакетная отправка по электронной почте

+2

Я бы удалил адрес электронной почты, чтобы задать вопрос, был ли я вами, поскольку он не нужен для ответа в любом случае. – zbr

+1

Поскольку это текст, вы можете просто отправить его по электронной почте как тело почтового сообщения. Например, 'sendmail [options] [email_address] lurker

+2

@ Zabri прав. Вы не должны публиковать свою электронную почту на любом открытом форуме. Это основной способ получить спам. – lurker

ответ

1

Я вижу 3 варианта для вас, как сейчас:

1. Суть не там нет встроенного способа в пакетном режиме, но есть сторонние инструменты, такие как блат и т.п., которые можно назвать из пакетного файла, но, как вы уже упоминали, вы не хотите никакого дополнительного программного обеспечения.

2. Вы можете включить установленный SMTP-сервер Windows. А затем запустить сценарий Powershell:

$smtpServer = "system.abc.com" 
$smtpFrom = "[email protected]" 
$smtpTo = "[email protected]" 
$messageSubject = "Put your subject here" 

$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto 
$message.Subject = $messageSubject 
$message.IsBodyHTML = $true 
$message.Body = Get-Content debug.txt 

$smtp = New-Object Net.Mail.SmtpClient($smtpServer) 
$smtp.Send($message) 

3. Вы можете включить установленный сервер SMTP в Windows. А затем запустить VBScript:

Const ForReading = 1 
Const ForWriting = 2 
Const ForAppending = 8 
Const FileToBeUsed = "debug.txt" 
Dim objCDO1 
Dim fso, f 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.OpenTextFile(FileToBeUsed, ForReading) 
Set objCDO1 = CreateObject("CDO.Message") 
objCDO1.Textbody = f.ReadAll 
f.Close 
objCDO1.TO ="[email protected]" 
objCDO1.From = "[email protected]" 
objCDO1.Subject = "Put your subject here" 
objCDO1.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration /sendusing") = 2 
objCDO1.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration /smtpserver") = "system.abc.com" 
objCDO1.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration /smtpserverport") = 25 
objCDO1.Configuration.Fields.Update  
objCDO1.Send 
Set f = Nothing 
Set fso = Nothing 

Как вы уже упомянули, что вы используете Windows 7 Ultimate, так как вариант 2 и 3 будет работать на вашей системе очень хорошо.

0

Вы можете использовать бесплатный инструмент, например sendemail.exe http://caspian.dotconf.net/menu/Software/SendEmail/. Загрузите и скопируйте файл sendemail.exe в системный путь. Это только для простых внутренних SMTP-сообщений. Это нельзя использовать для отправки внешних сообщений, если ваш сервер Exchange не настроен для отправки анонимных внешних сообщений. Почти все серверы Exchange не настроены для этого.

Вы можете использовать эту простую процедуру в пакетном скрипте.

CALL:SENDEMAILALERT "From SMTP address" "To SMTP addresses" "Subject" "Message" "File to attach" "smtp.host.com:25" 

:SENDEMAILALERT 
SET SENDEMAILCMD=-f "%~1" 
SET SENDEMAILCMD=%SENDEMAILCMD% -t "%~2" 
SET SENDEMAILCMD=%SENDEMAILCMD% -u "%~3" 
SET SENDEMAILCMD=%SENDEMAILCMD% -m "%~4" 
SET SENDEMAILCMD=%SENDEMAILCMD% -a "%~5" 
SET SENDEMAILCMD=%SENDEMAILCMD% -s "%~6" 
SENDEMAIL %SENDEMAILCMD% >NUL 2>&1 
SET SENDEMAILCMD= 
GOTO:EOF 
+0

Как я уже сказал в этом вопросе, мне не нужно включать какое-либо дополнительное программное обеспечение. – 09stephenb

Смежные вопросы