nishimeno
@nishimeno

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

メール送信でToへ複数並べて送信したい

Q&A

Closed

解決したいこと

ユーザのメール一覧を記したcsvからアドレス情報を読みこみ、
1レコード内に、複数のアドレスがあれば、すべてToに入れて送信したいと考えています。

アドレスの連結がうまくいかないため解決方法をご教示ください

発生している問題・エラー

Send-MailMessage : メール ヘッダーに無効な文字が見つかりました: '"'。

該当するソースコード


#中略
#csv読込
$csv = Import-Csv .\sample.csv -Encoding Default -Header "csv_data_a","csv_data_b","csv_data_c"
$data_a = @($csv | % {$_.csv_data_a})
$data_b = @($csv | % {$_.csv_data_b})
$data_c = @($csv | % {$_.csv_data_c})

for ( $i = 0; $i -lt $data_a.Length; $i++ )
    {

$To = """ + $data_a[$i] +  "","" + $data_b[$i] +  "","" + $data_c[$i] + """
 



 #メールの本文
$body = "honbun"
   
Send-MailMessage -To $to -From $from -Cc $Cc -Bcc $Bcc  -SmtpServer $smtp -Subject $subject -Body $body  -Port $port  -Encoding $encode 
}
    

### 自分で試したこと
$To=の記述をいろいろと変えてみましたが解決できませんでした。
0

2Answer

下記のページに複数のアドレスについての記述がありました。

PowerShellでメールを送るには、send-mailmessageというコマンドを使用します。
んで、このコマンドは引数 -to で送信先を設定するのですが、この -to の型ってString型の一次元配列なのです。

# メールアドレス(受信者)
[System.String[]]$toAddress = @("*k1@dm.ne.jp", "*****k2@test.co.jp")

配列に入れてみると良いかもしれません。

1Like

Comments

  1. @nishimeno

    Questioner

    配列することで意図する処理ができました。ありがとうございました。

To <string[]>

確かにstringの配列のようですが、下記サイトの例2を見ると、単にカンマ,で区切っているだけです。

Windows PowerShell のヘルプ

$To = """ + $data_a[$i] + "","" + $data_b[$i] + "","" + $data_c[$i] + """

"が1つづつ足りないのでは?

$To = """" + $data_a[$i] + """,""" + $data_b[$i] + """,""" + $data_c[$i] + """"

echo $Toで表示させてみれば分かる?

1Like

Comments

  1. @nishimeno

    Questioner

    ご回答ありがとうございます。
    ”を追加しましたが、こちらは残念ながらうまくいきませんでした。

Your answer might help someone💌