Отправить письмо с помощью «Отправить как» или изменить отправителя - PullRequest
0 голосов
/ 02 ноября 2018

Я делаю скрипт для автоматизации Outlook 2016. У меня одна учетная запись с двумя разными почтовыми ящиками от клиентов.

В конце скрипта мне нужно отправить электронное письмо с именем папки входящих сообщений, из которой запускается скрипт. Я уполномочен отправлять электронную почту на имя обеих папок, но не могу заставить скрипт сделать это. Я публикую свой фактический код:

Код:

Function Send-Email {
    param ([String]$desde,[String]$subject,[String]$buzon,[String]$inc)


$mail = $Outlook.CreateItem(0)
$firma ="
Textplan
"

$mail.subject = "Closed Ticket "+$subject
[String]$cuerpo =@"
Dear colleague,

bla bla bla

Thank you.
"@

$mail.sender = $buzon
$mail.body = $cuerpo+" "+$firma 
$mail.To = $desde
$mail.Send()
Start-Sleep 3

}

$Outlook = New-Object -ComObject Outlook.Application
$desde = client2@mail.com
$buzon = inbox1@mail.com
$inc = 000000001
$subject = "Automat request"
Send-Email -desde $desde -subject $asunto -buzon $Buzon1 -inc $inc

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Я наконец-то использовал эти строки и хорошо работал:

$mail.SentOnBehalfOfName = "inbox1d@mail.com"
$mail.SendUsingAccount = $Outlook.Session.Accounts | where {$_.DisplayName -eq $FromMail}

Function Send-Email {
    param (
        [String]$desde,
        [String]$subject,
        [String]$buzon,
        [String]$inc
    )

    $firma = 'Textplan'
    $cuerpo = "Dear colleague,`r`nbla bla bla`r`nThank you."

    $Outlook = New-Object -ComObject Outlook.Application
    $mail = $Outlook.CreateItem(0)
    $mail.subject = 'Closed Ticket ' + $subject
    $mail.sender = $buzon
    $mail.body = "$cuerpo $firma"
    $mail.SentOnBehalfOfName = "inbox1d@mail.com"
    $mail.SendUsingAccount = $Outlook.Session.Accounts | where {$_.DisplayName -eq $FromMail}
    $mail.Send()
    Start-Sleep 3
}

$desde = 'client2@mail.com'
$subject = 'Automat request'
$buzon = 'inbox1@mail.com'
$inc = '000000001'

Send-Email -desde $desde -subject $subject -buzon $buzon -inc $inc 
0 голосов
/ 02 ноября 2018

Ваши проблемы выглядят так:

  1. Объект, определенный вне функции, в которой он используется:

    $Outlook = New-Object -ComObject Outlook.Application
    
  2. Строки без кавычек в переменных:

    $desde = client2@mail.com
    $buzon = inbox1@mail.com
    $inc = 000000001
    
  3. Смешивать и сочетать одинарные и двойные кавычки

    • Я бы рекомендовал прочитать about_quoting_rules , чтобы понять разницу, поскольку это весьма важно при использовании переменных внутри строк.
  4. параметр функции $inc определен имеет данные, но ни для чего не используется?

    • Рекомендую удалить это, если оно не используется.

Специально не проблема, но я изменил строку here (@" "@) на обычную строку с разрывами строк (`r`n`)


После устранения проблем и исправления кода:

Function Send-Email {
    param (
        [String]$desde,
        [String]$subject,
        [String]$buzon,
        [String]$inc
    )

    $firma = 'Textplan'
    $cuerpo = "Dear colleague,`r`nbla bla bla`r`nThank you."

    $Outlook = New-Object -ComObject Outlook.Application
    $mail = $Outlook.CreateItem(0)
    $mail.subject = 'Closed Ticket ' + $subject
    $mail.sender = $buzon
    $mail.body = "$cuerpo $firma"
    $mail.To = $desde
    $mail.Send()
    Start-Sleep 3
}

$desde = 'client2@mail.com'
$subject = 'Automat request'
$buzon = 'inbox1@mail.com'
$inc = '000000001'

Send-Email -desde $desde -subject $subject -buzon $buzon -inc $inc

У меня нет Outlook для тестирования кода, но после проверки его с помощью документации Outlook.Application теперь она кажется действительной.

...