Você pode usar o esquema de URL mailto para criar um link de email contendo um corpo de mensagem predefinido e, em seguida, chamá-lo do linha de comando, que deve abri-lo no seu cliente de e-mail padrão. Por exemplo:
start mailto:?body=Your%20message%20here
Basta personalizar a peça após body=
no final. Eu li que o texto precisa ser codificado por URL , mas pelo menos no Windows Live Mail 2012 que não parece ser necessário. Eu não tentei com textos mais longos ou símbolos especiais, e eu não tenho nenhum outro cliente de e-mail (Outlook, Thunderbird, etc.) para testar.
Para construir esse comando, você pode escrever um arquivo em lote simples, como o seguinte:
@echo off
set /p text=
if "%text%" == "" goto error
start mailto:?body=%text%
goto end
:error
echo No argument provided!
:end
No entanto, com isso você precisa que o texto seja codificado por URL, portanto, talvez você queira fazer a coisa toda no PowerShell. Para codificar por URL uma string, você pode usar isto:
[System.Reflection.Assembly]::LoadWithPartialName("System.Web") | out-null
[System.Web.HttpUtility]::UrlEncode("Your message here")
(A primeira linha é necessária para carregar o namespace System.Web
no qual a função HttpUtility.UrlEncode
reside.)
De fato, se o seu comando (ou o que você tiver produzido o texto que você deseja redirecionar) não for muito complexo, você pode escrever o seguinte caractere no PowerShell (substituindo <your-command-here>
pelo comando real está usando):
start ("mailto:?body={0}" -f [System.Web.HttpUtility]::UrlEncode(<your-command-here>))
Nota: isso pressupõe que você queira apenas redirecionar o texto para o seu cliente de e-mail padrão. Se você quiser realmente enviar e-mails a partir da linha de comando, veja a resposta do @ allquixotic.