使用powershell发送带有内联附件的电子邮件

使用powershell发送带有内联附件的电子邮件,powershell,email,Powershell,Email,要求: $From = "From@gmail.com" $ToEmails = "ToEmails@gmail.com" $CcEmails = "CcEmails@gmail.com" $userName = "From@gmail.com" $ImageName = "codecover.png" $FilePath = "D:\$($ImageName)" $Attachment = @($FilePath) $Subject = "Test Subject" $password = "

要求:

$From = "From@gmail.com"
$ToEmails = "ToEmails@gmail.com"
$CcEmails = "CcEmails@gmail.com"
$userName = "From@gmail.com"
$ImageName = "codecover.png"
$FilePath = "D:\$($ImageName)"
$Attachment = @($FilePath)
$Subject = "Test Subject"
$password = "From Email password"
$SMTPServer = "smtp.outlook.com"
$SMTPPort = "587"
$Body += "<img src='$($ImageName)' />"

[string][ValidateNotNullOrEmpty()]$password = $password
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$Credentials = New-Object Management.Automation.PSCredential ($userName, $securePassword)

Send-MailMessage -From $From -to $ToEmails -Cc $CcEmails -Subject $Subject -BodyAsHtml -Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl -Credential $Credentials -Attachments $Attachment –DeliveryNotificationOption OnSuccess
使用powershell发送带有内联图像的邮件,不附加图像作为附件

我的Powershell代码:

$From = "From@gmail.com"
$ToEmails = "ToEmails@gmail.com"
$CcEmails = "CcEmails@gmail.com"
$userName = "From@gmail.com"
$ImageName = "codecover.png"
$FilePath = "D:\$($ImageName)"
$Attachment = @($FilePath)
$Subject = "Test Subject"
$password = "From Email password"
$SMTPServer = "smtp.outlook.com"
$SMTPPort = "587"
$Body += "<img src='$($ImageName)' />"

[string][ValidateNotNullOrEmpty()]$password = $password
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$Credentials = New-Object Management.Automation.PSCredential ($userName, $securePassword)

Send-MailMessage -From $From -to $ToEmails -Cc $CcEmails -Subject $Subject -BodyAsHtml -Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl -Credential $Credentials -Attachments $Attachment –DeliveryNotificationOption OnSuccess
$From=”From@gmail.com"
$ToEmails=”ToEmails@gmail.com"
$CcEmails=”CcEmails@gmail.com"
$userName=”From@gmail.com"
$ImageName=“codecover.png”
$FilePath=“D:\$($ImageName)”
$Attachment=@($FilePath)
$Subject=“测试对象”
$password=“来自电子邮件密码”
$SMTPServer=“smtp.outlook.com”
$SMTPPort=“587”
$Body+=“”
[string][ValidateNotNullOrEmpty()]$password=$password
$securePassword=converttosecurestring-String$password-AsPlainText-Force
$Credentials=新对象管理.Automation.PSCredential($userName,$securePassword)
发送邮件消息-从$From-到$ToEmails-Cc$CcEmails-Subject$Subject-BodyAsHtml-Body$Body-SmtpServer$SmtpServer-port$SMTPPort-UseSsl-Credential$Credentials-Attachments$Attachment-DeliveryNotificationOption成功
我的结果有问题:

$From = "From@gmail.com"
$ToEmails = "ToEmails@gmail.com"
$CcEmails = "CcEmails@gmail.com"
$userName = "From@gmail.com"
$ImageName = "codecover.png"
$FilePath = "D:\$($ImageName)"
$Attachment = @($FilePath)
$Subject = "Test Subject"
$password = "From Email password"
$SMTPServer = "smtp.outlook.com"
$SMTPPort = "587"
$Body += "<img src='$($ImageName)' />"

[string][ValidateNotNullOrEmpty()]$password = $password
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$Credentials = New-Object Management.Automation.PSCredential ($userName, $securePassword)

Send-MailMessage -From $From -to $ToEmails -Cc $CcEmails -Subject $Subject -BodyAsHtml -Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl -Credential $Credentials -Attachments $Attachment –DeliveryNotificationOption OnSuccess
使用内联附件发送邮件的结果,但附件中有相同的图像,这是我不想要的。请找到下面的屏幕截图


请建议我如何发送内联图像而不在附件中附加该图像。

您可以对其进行base64编码

$Byte    = [system.io.file]::ReadAllBytes("C:\yourImage.png")
$Base64  = [System.Convert]::ToBase64String($Byte)
$Content = '{0}{1}{2}' -f '<img src="data:image/png;base64,',$Base64,'">'
$Byte=[system.io.file]::ReadAllBytes(“C:\yourImage.png”)
$Base64=[System.Convert]::tobase64字符串($Byte)
$Content='{0}{1}{2}'-f''

将内容用作消息正文。

您可以对其进行base64编码

$Byte    = [system.io.file]::ReadAllBytes("C:\yourImage.png")
$Base64  = [System.Convert]::ToBase64String($Byte)
$Content = '{0}{1}{2}' -f '<img src="data:image/png;base64,',$Base64,'">'
$Byte=[system.io.file]::ReadAllBytes(“C:\yourImage.png”)
$Base64=[System.Convert]::tobase64字符串($Byte)
$Content='{0}{1}{2}'-f''

将内容用作邮件正文。

从发送邮件中删除“-Attachments$Attachment”,就可以开始了!您好@BernardMoeskops,如果我删除附件参数,内联图像也不会显示。可能是怪异的重复,我从Gmail到Outlook测试了它,它成功了。似乎它只是在Gmail中不起作用。找到它,谷歌只允许来自可信来源的图像。因此,如果您将图像存储在例如Google Drive中,它可以工作。从发送邮件中删除“-Attachments$Attachment”,您就可以开始了!您好@BernardMoeskops,如果我删除附件参数,内联图像也不会显示。可能是怪异的重复,我从Gmail到Outlook测试了它,它成功了。似乎它只是在Gmail中不起作用。找到它,谷歌只允许来自可信来源的图像。因此,如果你将图像存储在谷歌硬盘上,它就可以工作了。谢谢你的回答,我认为这个想法会奏效。但我有一个问题。当我将$Content作为我的主体发送时,我不会在邮件中获得图像。当我检查inspect元素时,我可以看到像这样的“”。但当我在网页上复制粘贴$Content进行检查时,它完美地显示了我的图像。你能建议一下为什么$content与邮件中的图像标签不匹配吗。我是否需要在mail like中使用任何内容类型。请suggest@Chandramouli我今天遇到了“空”的问题。我从PNG改为JPEG格式,这使得文件变得越来越小,而且很有效。PNG(不起作用)约为85kB,JPEG约为7.5kB。我在电子邮件中使用了其他base64 PNG图像,虽然有效,但它们的文件要小得多。Outlook online显然会弄乱HTML。我想知道它是否只是编码错误,并且有一个它可以处理的最大长度(比如65535)。谢谢你的回答,我认为这个想法会奏效。但我有一个问题。当我将$Content作为我的主体发送时,我不会在邮件中获得图像。当我检查inspect元素时,我可以看到像这样的“”。但当我在网页上复制粘贴$Content进行检查时,它完美地显示了我的图像。你能建议一下为什么$content与邮件中的图像标签不匹配吗。我是否需要在mail like中使用任何内容类型。请suggest@Chandramouli我今天遇到了“空”的问题。我从PNG改为JPEG格式,这使得文件变得越来越小,而且很有效。PNG(不起作用)约为85kB,JPEG约为7.5kB。我在电子邮件中使用了其他base64 PNG图像,虽然有效,但它们的文件要小得多。Outlook online显然会弄乱HTML。我想知道它是否只是编码错误,并且有一个它可以处理的最大长度(比如65535)。