Вы можете использовать схему URL-адреса mailto , чтобы создать ссылку на электронную почту, содержащую предварительно определенное тело сообщения, а затем вызвать ее из командной строки, которая должна открыться в почтовом клиенте по умолчанию. Например:
start mailto:?body=Your%20message%20here
Просто настройте деталь после body=
в конце. Я читал, что текст должен быть закодирован в URL, но, по крайней мере, в Windows Live Mail 2012 это не требуется. Однако я не пробовал использовать более длинные тексты или специальные символы, и у меня нет других почтовых клиентов (Outlook, Thunderbird и т.д.) Для тестирования.
Для построения этой команды вы можете написать простой командный файл, например, такой:
@echo off
set /p text=
if "%text%" == "" goto error
start mailto:?body=%text%
goto end
:error
echo No argument provided!
:end
Однако, с этим вам нужно, чтобы текст был закодирован в URL, так что вы можете сделать все это в PowerShell. Чтобы URL-кодировать строку, вы можете использовать это:
[System.Reflection.Assembly]::LoadWithPartialName("System.Web") | out-null
[System.Web.HttpUtility]::UrlEncode("Your message here")
(Первая строка необходима для загрузки System.Web
пространство имен, где HttpUtility.UrlEncode
живет.)
На самом деле, если ваша команда (или все, что у вас есть, которая производит текст, который вы хотите перенаправить) не слишком сложна, вы можете просто написать следующую однострочную строку в PowerShell (заменив <your-command-here>
реальной командой) вы используете):
start ("mailto:?body={0}" -f [System.Web.HttpUtility]::UrlEncode(<your-command-here>))
Примечание: это предполагает, что вы просто хотите перенаправить текст в почтовый клиент по умолчанию. Если вы действительно хотите отправлять электронные письма из командной строки, посмотрите на ответ @ allquixotic.