Powershell отправляет почту каждому пользователю из SQL-запроса

К сожалению, я не смог найти свой ответ из всех примеров, которые мне попадались.

У меня есть запрос SQL, который содержит следующие значения Имя Суффикс Фамилия Адрес электронной почты

Теперь я хочу отправить письмо по записи и в почте указать имя.

Ниже приведен код, который не выполняет цикл прямо сейчас и отправляет имя по почте.

<# Variabelen #>
$PlaceDate = "Amsterdam, " + (Get-Date -f dd-MM-yyyy)
$MailSubject = "My subject"
$sqlinstance = "MSSQLSRV1"


<# SQL data #>
$query = "SELECT [Firstname]
      ,[Suffix]
      ,[Lastname]
      ,[Emailaddress]
      ,[DateVisit]
  FROM [DBname].[dbo].[tbl_EventVisitors]
  where CONVERT(DATE, [DateVisit]) = CAST( GETDATE()-1 AS Date )"
$results = Invoke-Sqlcmd -Query $query -ServerInstance $sqlinstance

<# Create mail with SQL fields #>
$CoryReportHtml = ConvertTo-Html -PreContent @"
<body>
<br />
$PlaceDate<br /><br />
Dear $Firstname $Suffix $Lastname,<br />
MyMessage
</body>
"@ | Out-String


<# Send the mail #>
$mailParams = @{
    SmtpServer = 'localhost'
    to         = $Emailaddress
    from       = "[email protected]"
    Subject    = $MailSubject
    Body       = $CoryReportHtml
    BodyAsHtml = $true
}

Send-MailMessage @mailParams
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
$results = Invoke-Sqlcmd -Query $query -ServerInstance $sqlinstance
foreach ($row in $results) {
    $body_value = $null
    $body_value = "Dear $($row.Firstname) $($row.$Lastname)"
    $body_value += "my message"
    $Emailaddress = $row.Name
    $MailSubject = "Subject here"
    $mailParams = @{
        SmtpServer = 'localhost'
        to         = $Emailaddress
        from       = "[email protected]"
        Subject    = $MailSubject
        Body       = $body_valu
        BodyAsHtml = $true
    }

    Send-MailMessage @mailParams


    Write-Host "email sent to $row.name"
}

ПРЕДУПРЕЖДЕНИЕ. Команда «Send-MailMessage» устарела. Этот командлет не гарантирует безопасное подключение к SMTP-серверам. Хотя в PowerShell нет непосредственной замены, мы рекомендуем вам не использовать Send-MailMessage в настоящее время. См. aka.ms/SendMailMessage для получения дополнительной информации. ?

Luuk 18.03.2022 13:25

Вы, вероятно, хотите изменить "Dear $row.Firstname $row.$Lastname" на "Dear $($row.Firstname) ($row.Lastname)"

Mathias R. Jessen 18.03.2022 13:28

Другие вопросы по теме