2016-12-14 7 views
0

デプロイメントがあるときにいつでも自分のパイプラインが送信する電子メールを作成するための小さなPSスクリプトを作成しました。問題は私の個人的な電子メールから送信される電子メールが会社のOutlook電子メールから送信されたくないということです。私は検索し、異なるSMTPサーバー名を見て、mail.fromを使用していますが、私はそれを動作させることはできません。誰かが私を助けることができますか?Powershellと別のメールボックスからのメールを送信

param(
[Parameter(Mandatory=$true,Position=0)] 
[string]$Address1, 
[Parameter(Mandatory=$true,Position=1)] 
[string]$Address2, 
[switch]$Recurse, 
[switch]$Force 
) 

$ol = New-Object -comObject Outlook.Application 
$mail = $ol.CreateItem(0) 
$Mail.Recipients.Add($Address1) 
$Mail.Recipients.Add($Address2) 
$Mail.Subject = "DSC Deployment in Progress" 
$Mail.Body = "There is a DSC install beginning. . ." 
$Mail.Send() 
+0

こんにちは、Outlookクライアントの両方のメールアカウントにアクセスできますか? – sodawillow

+0

私はそうは思わない、私は私の個人的な電子メールの設定を参照してください、私はその特定のグループに属している私はメールを送信したい – Neil

+0

から 'Send-MailMessage'を試してみてください。 SMTPサーバーを指定することができます。 https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/send-mailmessage – sodawillow

答えて

0

SendUsingAccountプロパティに値を割り当てる必要があります。アカウントは(outlook).Session.Accountsコレクションにあります。

$sendSmtpAddress = "[email protected]" 
$account = $ol.session.acounts | ? { $_.smtpAddress -eq $sendSmtpAddress } 

そして、それは価値がある何のため

$mail.SendUsingAccount = $account 
$mail.Send() 

全例

$sendSmtpAddress = "[email protected]" 
$ol = new-object -comobject "outlook.application" 
$account = $ol.session.accounts | ? { $_.smtpAddress -eq $sendSmtpAddress } 
$mail = $ol.CreateItem(0) 
$mail.recipients.add("[email protected]") | out-null 
$mail.subject = "test email" 
$mail.body = "test email" 
$mail.SendUsingAccount = $account 
$mail.Send() 

を送信する前にSendUsingAccountプロパティに割り当てて、私は長い時間前に見通しを経由してメールを送信しようとあきらめました普通のSMTPを使う方がはるかに簡単です。ローカルSMTPサーバー(Exchange?)のセキュリティポリシーによっては、ローカルドメイン上のユーザーを「送信」できる場合があります。あなたは電子メールを送信するために使用できる内部SMTPサーバーの名前/ IPのためにあなたのITの人々を依頼し、それはように簡単です:

send-mailmessage -smtpServer (servername or IP) -from [email protected] -to @([email protected], [email protected]) -subject "Email Subject" -body "Email Body" 

send-mailmessageを使用している場合は、それが送信者の表示名を設定することが可能ですフォーム"Display Name <[email protected]>"を使用して

-from "Deployment Alerts <[email protected]>" 

受信者には、SMTPアドレスではなく電子メールクライアントの表示名が表示されます。

私は良い習慣であると考えるのポイントのカップル:

  1. SMTPサーバーの設定によっては、「送信者アドレスのほとんどない、または全く検証があるかもしれません。アクセス可能な本物のアカウントを使用する価値があるため、バウンス/配信不能レポートを見ることができます。
  2. 警告がどこから来たのか、どのプロセスがそれを生成したのかを記述するメール本文(おそらくフッター)に何かを含めることを検討してください。後継者や同僚が将来スクリプトを追跡するのに役立ちます。
+0

その行の最後のコードははるかに簡単で、私は必要なものをeaxactlyずっと返すよ。 – Neil

+0

ニール、それは助けてくれて嬉しい。私が使用する別の手法は、送信者の表示名を設定することです。これは、完全なSMTPアドレスの代わりに受信者の電子メールクライアントに表示されます。私はこれを含めるために投稿を更新します。 – andyb

+0

素晴らしい!再度、感謝します! – Neil

関連する問題