Можно ли открыть файловый менеджер и прикрепить выбранный файл к outlook и отправить его в powershell? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь создать скрипт, который позволит мне отправлять выбранный файл из Проводника с помощью Powershell. Я создал нижеприведенное, но каждый раз, когда я использую его, он не забирает выбранный файл и отправляет электронное письмо без каких-либо вложений. Кто-нибудь может помочь?

Мне не нравится вводить путь прямо в сценарии, поскольку используемые мной файлы могут находиться в другой папке или под другим именем, поэтому я бы хотел выбрать его вручную (и, конечно, другие люди будут используя его для облегчения нашей работы)

write-host "Attaching downloaded Security Manual"

#Promting for mail address and if file has been downloaded
$user= read-host -Prompt "Enter user email address";
$sm= read-host -Prompt "Did you download the signed Survey? (y/n)";

#if statement, if the answer will be 'y' it will send do the below, if 'n' it will stop the script as it is
if ($sm -eq "y")
{
$ref= read-host -Prompt "Enter ticker ref number";

#Opening explorer and select the file
$myFile = "$home\"
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = Split-Path $myFile -Parent 
$OpenFileDialog.FileName = Split-path $myfile -leaf
$OpenFileDialog.ShowDialog() | Out-Null

#open outlook and send the email
$ol= New-Object -ComObject outlook.application
$mail= $ol.CreateItem(0)
$mail.recipients.Add("$user")
$mail.subject="$ref"
$mail.Attachments("$myFile")
$mail.send()
}

Нет сообщения об ошибке при его запуске, но я вижу во входящих и исходящих сообщениях, что отправленная почта просто без каких-либо вложений.

1 Ответ

1 голос
/ 09 июля 2019

У тебя почти было это.

#Opening explorer and select the file
$myFile = "$home\"
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = Split-Path $myFile -Parent
$OpenFileDialog.ShowDialog() | Out-Null
$Attachment = $OpenFileDialog.filename

#open outlook and send the email
$ol= New-Object -ComObject outlook.application
$mail= $ol.CreateItem(0)
$mail.recipients.Add("$user")
$mail.subject="$ref"
$mail.Attachments.add("$Attachment")
$mail.send()

Это прикрепит документ, который вы положили в поле OpenFileDialog. Вы можете игнорировать использование переменной $Attachment и вызывать $OpenFileDialog.filename непосредственно в $mail.Attachments.add($OpenFileDialog.filename), но для повторного использования я создал собственную переменную.

РЕДАКТИРОВАТЬ: Забыл метод .add на $mail.Attachments

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...