我正在寻找一种在PowerShell中导入模板HTML文件的方法,并且能够使用变量填充它,而变量又以包含用户数据的HTML格式发送电子邮件。
我已经知道如何发送HTML电子邮件了。而且,目前在代码中嵌入了“here”字符串中的HTML。我想通过能够根据国家/地区代码获取HTML模板,更进一步。因此,如果用户在美国,它将收到一封英文HTML数据填写的电子邮件,如果他们是荷兰人,他们将用荷兰语等获得。
echo "=== Pushing data from $SRC to $DEST in two simple steps"
echo "=== 1) Copy to a writable temp directoy in user home"
gcloud compute copy-files "$SRC"/*.* "${GCE_USER}@${GCE_INSTANCE}:$TEMP"
echo "=== 2) Move with 'sudo' to destination"
gcloud compute ssh ${GCE_USER}@${GCE_INSTANCE} --command "sudo mv $TEMP/*.* $DEST"
here字符串是脚本的一部分,我希望能够从TXT文件中导入它,以免弄乱脚本。
答案 0 :(得分:0)
不是使用文本文件,而是为所需的每种html语言格式创建一个powershell文件(ps1)。在这些文件中,您可以将单个变量设置为html文本(文件EN_US.ps1):
$bodyENUS = @"Dear <b><font color=red>user</b></font> <br>
This is a test <b>HTML</b> email for your language preference<br>
Sincerely,<br> PdeRover<br>"
然后,您可以使用两种方式将变量传递到主ps文件:Dot Sourcing或使用全局变量 Dot Sourcing :通过提供文件名来调用变量 在主文件中:
..\EN_US.ps1
..\PT_PT.ps1
$smtp = "Exchange-Server"
$to = $Identity
$from = "Voicemail <P@domain.net>"
$subject = "This is a Test of HTML Email"
if (user is English speaking){
$bodyByLang = $bodyENUS}
elseif (user is Portuguese speaking) {
$bodyByLang = $bodyPTPT}
send-MailMessage -SmtpServer $smtp -To $to -From $from -Subject $subject -Body $bodyByLang -BodyAsHtml -Priority high
全局变量:使用$Global:
为变量添加前缀并在运行时调用该文件。 $Global: bodyENUS
然后使用$bodyENUS
我问自己SO question关于使用它们的差异/最佳做法。值得一读。
这足以指出你正确的方向。