powershell 发送邮件

01 前言

最近在搞搞服务器,用的是Windows系统,配合脚本应该有的玩玩,比如间隔多久查一些东西发到指定邮箱,嘿嘿。下面做简单记录。

02 正文

代码贴上

<#
 # 邮件发送
 # 使用smtp协议
 # 默认为正文为html格式
 # by hokis
 # 2019-03-27
#>

function Send-Email-BySMTP
{
    [CmdletBinding()]
    param(
        [string]$userName, #用户名
        [string]$password, #密码
        [string]$hostName, #smtp服务器
        [string]$sendName,#发件人  有些邮箱可以设置与用户名不一致,如果省略的话,默认与用户名一致
        [string[]]$mailTo, #接收人
        [string[]]$ccTo, #抄送人
        [string]$subject, #主题
        [string]$content, #内容
        [string[]]$attachments #附件
    )
    if([string]::IsNullOrEmpty($sendName)){$sendName = $userName}
    $message = New-Object System.Net.Mail.MailMessage
    if($mailTo){$mailTo | %{$message.To.Add($_)}}
    if($ccTo){$ccTo | %{$message.CC.Add($_)}}
    $message.From =  New-Object System.Net.Mail.MailAddress($sendName)
    $message.Subject = $subject
    $message.Body = $content
    $message.BodyEncoding = [System.Text.Encoding]::UTF8  #正文编码
    $message.SubjectEncoding = [System.Text.Encoding]::UTF8 #主题编码
    $message.Priority = [System.Net.Mail.MailPriority]::High #优先级
    $message.IsBodyHtml = $true
    try{
        if($attachments){
        $attachments | %{
            $message.Attachments.Add((New-Object System.Net.Mail.Attachment($_)))
        }}
    }
    catch{
        Write-Verbose ("添加附件异常:" + $Error[0].Exception.Message)
    }

    $smtpClient = New-Object System.Net.Mail.SmtpClient($hostName)
    $smtpClient.UseDefaultCredentials = $true
    if($hostName.EndsWith("qq.com")){ #qq邮箱特别设置
        $smtpClient.UseDefaultCredentials = $false
    }
    
    $smtpClient.Port = 25 #端口
    $smtpClient.DeliveryMethod = [System.Net.Mail.SmtpDeliveryMethod]::Network
    #指定用户名和密码
    $smtpClient.Credentials = New-Object System.Net.NetworkCredential($userName,$password)
    $smtpClient.EnableSsl = $true

    try{
        $smtpClient.Send($message)
        return $true
    }
    catch
    {
        Write-Verbose ("发送异常:" + $Error[0].Exception.Message)
    }
    return $false

}

$res = Send-Email-BySMTP -userName "XXXX@163.com" -password "XXXX" -hostName "smtp.163.com" -mailTo "XXXXX@qq.com" -subject "约吗" -content "亲爱的,今晚约吗,我看好了一家好吃的!" -Verbose
if($res){
    Write-Host "邮件发送成功!"
}else{
    Write-Host "邮件发送失败!"
}

使用方法不多说了,有疑问的朋友可以参考之前写的powershell系列。

03 后记

其它邮箱的设置请参考相应官网的帮助说明,如果脚本用不了的话。
参考资料:
C#发送邮件类

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值