使用 PowerShell 脚本来发送电子邮件
使用 PowerShell 脚本来发送电子邮件

使用 PowerShell 脚本来发送电子邮件

1. 在左下角搜索框输入ISE,打开Windows PowerShell ISE,新建一个ps1文件,编辑代码如下:

$smtpServer = "smtp.126.com" # SMTP 服务器地址
$smtpPort = 25 # 使用非加密连接的端口
$from = "XXXXX@126.com" # 发件人邮箱地址
$to = "XXXXX@qq.com" # 收件人邮箱地址
$subject = "Daily Report" # 邮件主题
$body = "This is your daily report." # 邮件正文

# 使用发件人的邮箱凭据

$credential = Get-Credential -Credential "XXXXX@126.com"
Send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer -Port $smtpPort -Credential $credential
Write-Host "Email sent successfully."

保存为SendEmail.ps1文件

2. 用于读取 Excel 文件中的数据,将数据以 HTML 表格形式构建,并通过邮件发送。

新建一个ps1文件,编辑代码如下:

# 设置Excel文件路径和工作表名称

$excelFilePath = "C:\Users\xiaosun.GLOTECH-GF\Desktop\IP使用情况.xlsx"
$worksheetName = "Sheet1"

# 设置邮箱参数(使用126邮箱的SMTP服务器和端口)

$smtpServer = "smtp.126.com"
$smtpPort = 25
$senderEmail = "XXXXX@126.com"
$recipientEmail = "XXXXX@qq.com"
$subject = "IP使用情况"

# 加载Excel COM对象

$excel = New-Object -ComObject Excel.Application
$workbook = $excel.Workbooks.Open($excelFilePath)
$worksheet = $workbook.Sheets.Item($worksheetName)

# 获取行数和列数

$rowCount = $worksheet.UsedRange.Rows.Count
$colCount = $worksheet.UsedRange.Columns.Count

# 创建HTML表格

$htmlTable = "<table border='1'>"

# 循环逐行逐列读取数据并构建表格

for ($i = 1; $i -le $rowCount; $i++) {
$htmlTable += "<tr>"

for ($j = 1; $j -le $colCount; $j++) {

$cellValue = $worksheet.Cells.Item($i, $j).Text

$htmlTable += "<td>$cellValue</td>"

}

$htmlTable += "</tr>"
}

$htmlTable += "</table>"

# 关闭Excel对象

$workbook.Close()
$excel.Quit()

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)

# 构建邮件消息

$htmlBody = "<html><body>$htmlTable</body></html>"

# 获取邮箱凭证(用户名和密码)

$credential = Get-Credential -Message "Enter your email credentials"

# 创建附件对象

$attachment = New-Object System.Net.Mail.Attachment($excelFilePath)

# 发送邮件

$smtp = New-Object Net.Mail.SmtpClient($smtpServer, $smtpPort)
$smtp.EnableSsl = $false # 126邮箱不使用SSL
$smtp.Credentials = $credential.GetNetworkCredential()
$mailMessage = New-Object Net.Mail.MailMessage($senderEmail, $recipientEmail, $subject, $htmlBody)
$mailMessage.IsBodyHtml = $true
$mailMessage.Attachments.Add($attachment)

$smtp.Send($mailMessage)

# 清理

$smtp.Dispose()
$mailMessage.Dispose()
$attachment.Dispose()

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Title - Artist
0:00