在不使用文件路径的情况下,将二进制文件附加到PowerShell中的$SMTPMessage.Attachments.Add
可以通过以下步骤实现:
Convert.ToBase64String
方法将二进制文件转换为Base64编码的字符串。这可以通过以下代码实现:$binaryData = Get-Content -Encoding Byte -Path "C:\path\to\file.bin"
$base64String = [System.Convert]::ToBase64String($binaryData)
Attachment
对象并将Base64编码的数据附加到$SMTPMessage.Attachments
属性:创建一个Attachment
对象,将Base64编码的数据附加到Attachment
对象的ContentStream
属性,并将该对象添加到$SMTPMessage.Attachments
集合中。这可以通过以下代码实现:$attachment = New-Object System.Net.Mail.Attachment
$attachment.ContentStream = [System.IO.MemoryStream]::new([System.Convert]::FromBase64String($base64String))
$SMTPMessage.Attachments.Add($attachment)
完整的代码如下:
$SMTPMessage = New-Object System.Net.Mail.MailMessage
$SMTPMessage.Subject = "Email Subject"
$SMTPMessage.Body = "Email Body"
$SMTPMessage.From = "sender@example.com"
$SMTPMessage.To.Add("recipient@example.com")
$binaryData = Get-Content -Encoding Byte -Path "C:\path\to\file.bin"
$base64String = [System.Convert]::ToBase64String($binaryData)
$attachment = New-Object System.Net.Mail.Attachment
$attachment.ContentStream = [System.IO.MemoryStream]::new([System.Convert]::FromBase64String($base64String))
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient = New-Object System.Net.Mail.SmtpClient("smtp.example.com", 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password")
$SMTPClient.Send($SMTPMessage)
注意事项:
"C:\path\to\file.bin"
替换为实际的二进制文件路径。"Email Subject"
、"Email Body"
、"sender@example.com"
和"recipient@example.com"
替换为实际的电子邮件主题、正文和发件人/收件人地址。"smtp.example.com"
、587
、"username"
和"password"
替换为实际的SMTP服务器地址、端口号以及用于身份验证的用户名和密码。附加说明:
$SMTPMessage.Attachments
属性是System.Net.Mail.AttachmentCollection
类型的集合,用于存储附件。可使用Add
方法将Attachment
对象添加到该集合中。希望这些信息对你有所帮助!如果还有其他问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云