Estou restrito em um projeto e tenho que usar o PowerShell para gerar e enviar emails do Outlook.
param([string]$address, [string]$subject);
$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItemFromTemplate("D:Usersmarktest.oft");
$Mail.To = "$address";
$Mail.Subject = "$subject";
$Mail.Send();
Eu estou usando um arquivo de modelo, como eu tenho que incluir uma imagem incorporada do logotipo da empresa.
No entanto, meu problema é que preciso alterar parte do corpo do email, mas manter os gráficos e a formatação incorporados.
Existe uma maneira no PowerShell de passar em um (por exemplo) parâmetro de ID de referência - e substituindo no corpo do arquivo OFT, # Ref # com "ID de referência" por exemplo:
param([string]$address, [string]$subject, [string]$RefID);
$Outlook = New-Object -ComObject Outlook.Application;
$Mail = $Outlook.CreateItemFromTemplate("D:Usersmarktest.oft");
****
$Mail.Body = $Mail.Body.Replace("#RefID#", $RefID)
****
$Mail.To = "$address";
$Mail.Subject = "$subject";
$Mail.Send();
o .Replace acima parece remover a formatação e substitui o logotipo por "CID: ...."
Como deveria ser:
O que parece depois de usar Substituir:
Obrigado por qualquer ajuda,
Marca
Respostas:
3 para resposta № 1Eu não tenho certeza se entendi o que você está tentando fazer. Você quer substituir uma string literal #RefID#
no corpo do email com o valor de uma variável $RefID
? Se assim for, isso pode ser feito, mas você precisa fazê-lo no lugar certo (o corpo do email):
$Mail.Body = $Mail.Body.Replace("#RefID#", $RefID)
Em caso de e-mail em HTML, talvez seja necessário modificar HTMLBody
propriedade em vez do Body
propriedade:
$Mail.HTMLBody = $Mail.HTMLBody.Replace("#RefID#", $RefID)
1 para resposta № 2
Algumas opções para você experimentar. Ambos devem trabalhar para substituir o texto em um arquivo.
1)
$file = "D:usersmarktest.oft"
(Get-Content $file).Replace("#RefID","$RefID") | Set-Content $file
2)
(Get-Content $file) |
Foreach-Object {$_ -replace "#RefID","$RefID"} |
Out-File $file