2017-03-03 4 views
0

CSVファイルにはさまざまな列があり、そのうちの2つは電子メール用です。これらの電子メール列内の各行には、電子メールのグループがあります。定義先:さまざまな値のフィールド

スクリプトからこれらのメールアドレスに送信したいと考えています。 TO:を除いて、セットアップと作業はすべて行っています。

スクリプトのアイデアは、csvの各行をループし、その行のセルから体のさまざまな部分に値を取得する電子メールを生成することです。次に、電子メールを送信し、CSVの次の行にループバックして同じことを行い、CSVファイルの終わりに達するまで続きます。

電子メール列に変数を挿入する際に問題があります。電子メールには「引用」がないため、推測しています。

これはどのようにして入力しますか?コード

  1. データをCSV
  2. インポートされ、被験者、アタッチメントに、ボディ変数が定義されている、からループが
  3. 、インポートされたデータのforeachの線
  4. SMTP作成されるために一言で言えば

  5. 次にsendmail-messageコマンドが提供されます。
  6. は、環境変数が現在のセッションにグローバルな影響力を持っているバッチファイルとは異なり

    ##For the purpose of this, the emaildata.csv looks like this sample: 
    
    "NameGroup","emailGroupA","emailGroupB" 
    "Groupabc","[email protected];[email protected]","[email protected];[email protected],com" 
    "Grouptrd","[email protected];[email protected]","[email protected];[email protected]" 
    "Groupghd","[email protected];[email protected]","[email protected];[email protected]" 
    
    
    $DataDir = "C:\Users\acastrellon\Documents" 
    $Data= import-csv $DataDir\emaildata.csv 
    foreach ($i in $Data) { 
    
    $NameGroup = $i.NameGroup 
    $TeamA = $i.emailGroupA.replace(';',"`n") 
    $TeamB = $i.emailGroupB.replace(';',"`n") 
    
    
    function send-email { 
    
    
    $smtpserver = " server.smtp" 
    $from = "myemail.com" 
    $to = $TeamA,$TeamB 
    
    send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer 
    
    } 
    
    [string] $subject = "some text here: $NameGroup" 
    #[string] $attachment = "not here yet" 
    [string] $body = " 
    
    Text here that calls out $NameGroup 
    
    This also lists: $TeamA 
    
    This here lists $TeamB 
    
    Done" 
    
    send-email -subject $subject -attachment $attachment -body $body 
    
    } 
    #this should loop to get data from next line of csv and generate a new email with data. 
    
+2

これまでに試したコードを教えてください。 –

+0

あなたは冗談を言っていますか?実際の関連コードを貼り付けることはできますか? – 4c74356b41

+1

'Send-MailMessage -To $ to' –

答えて

0

ループを閉じ、PowerShellは異なるスコープで変数を分離します。

次の2つの$TeamA & $TeamB変数関数内を参照しているが、あなたは外の機能、それらの値を設定します。関数スコープ(読み込み先)はスクリプトスコープ(スクリプトを設定する場所)とは異なるため、スクリプト内のsend-email関数内でこれらの変数は空になります。

PowerShell scopesにお読みください。スクリプト機能にいくつかの変更を加える必要があります。スクリプトスコープ($script:TeamA)から変数を読み込むか、またはそれらを渡すinto the function as a parameter

+0

申し訳ありませんが、私の悪い方が良い例を使用しているはずです。より正確なサンプルといくつかのコードで投稿を修正しました。 – ace23

+0

あなたが提供したコードに関連するように私の答えを更新しました。 –

+0

それで、スクリプトですべてを保持する機能を削除したらどうしますか? – ace23

関連する問題