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()