把creating mail代码写到调用处,往outbox写入 mailxxx.csv文件,入面记录了邮件的主要内容

写入

	#template
$TMP = IMPORT-CSV "$($dh)\mail\TEMPLATES\MAIL.CSV"
#customization
$TMP.CC ="" #
$TMP.Subject ="From Server $($( get-wmiobject Win32_ComputerSystem ).Name) By APOMS_TSQL_Deployment_Package $(get-date)." # test1
$TMP.Body ="$msg`nPlease Check The attachement for details. `nThanks`nBest Regards." # test
##clear
if(Test-Path "$logfile.zip" ){
Remove-Item -Path "$logfile.zip" -Force|&$log
}
#create zip
"zipping log.."
export-Zip -sourcefiles "$logfile" -zipfilename "$logfile.zip"|&$log
#add attachements
$TMP.Attachments ="$logfile.zip,$($dh)\Mail\msg.txt" #
#wirte-outbox,output mailxxx.csv
ConvertTo-Mail -path "$($dh)\mail\outbox\MAIL$t.CSV" -mail $tmp

发送,调用send-avmail.ps1发送邮件

."$($dh)\Mail\Send-AvEmail.ps1" 

sample

cls;
$dh = $pwd.path
#$PSScriptRoot =Split-Path -Parent $MyInvocation.MyCommand.Definition
$pv = $psversiontable.psversion.major
$strDate = Get-Date -Format "yyyyMMdd"
$logfile = "$($dh)\log\log$($strDate).txt"
$log = {$input|Tee-Object -FilePath $logfile -Append}
$filename = ''
$rem = {$i = '';1..75|%{$i += '-'};$i }
#getting order
"start deploying `nat $(get-date)"|&$log
"reading configuration file..."|&$log
$content = ( Get-Content "$($dh)\module\config_order"| Out-String )
$hash = ( Invoke-Expression $content )
#$hash
#sql parameters
$content = ( Get-Content "$($dh)\module\config_sys"| Out-String )
$hashsys = ( Invoke-Expression $content )
&$rem|&$log
try{
#Display
#sorting hashtable
$hash.getEnumerator()|sort name|&$log
&$rem|&$log
"echo The Depoly will start immediately" |&$log
sleep 1|&$log
&$rem|&$log
#hit by order foreach($e in $hash.getEnumerator()|sort name){
if($dh -ne $pwd.path){
Set-Location $dh
} $key = $e.value
"........................$key............." |&$log
$cmd = "$($dh)\module\RunSqlcmdByKey.ps1 "
$dh|&$log
Invoke-Expression -Command $cmd |&$log
} }
catch {
"$(Get-Date) error:$_.Exception"|&$log
}finally{
"finish deploying at $(get-date)"|&$log
$title = "Send mail"
$message = "Do you want to Send the logfile to isoftstone?"
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", `
"Send the logfile to isoftstone."
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", `
"Continue."
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 1)
switch ($result)
{
0 {
#import mail moudle
"creating attachement"
Import-Module "$($dh)\mail\MailModule.psm1" -force
$t = Get-Date -Format 'yyyyMMdd_hh_mm_ss'
."$($dh)\Mail\msg.ps1" "creating mail"
$msg ="FYI."
#template
$TMP = IMPORT-CSV "$($dh)\mail\TEMPLATES\MAIL.CSV"
#customization
$TMP.CC ="" #
$TMP.Subject ="From Server $($( get-wmiobject Win32_ComputerSystem ).Name) By APOMS_TSQL_Deployment_Package $(get-date)." # test1
$TMP.Body ="$msg`nPlease Check The attachement for details. `nThanks`nBest Regards." # test
##clear
if(Test-Path "$logfile.zip" ){
Remove-Item -Path "$logfile.zip" -Force|&$log
}
#create zip
"zipping log.."
export-Zip -sourcefiles "$logfile" -zipfilename "$logfile.zip"|&$log
#add attachements
$TMP.Attachments ="$logfile.zip,$($dh)\Mail\msg.txt" #
#wirte-outbox,output mailxxx.csv
ConvertTo-Mail -path "$($dh)\mail\outbox\MAIL$t.CSV" -mail $tmp
#start sending
"praparing to send"
sleep 10
"sending email..."
."$($dh)\Mail\Send-AvEmail.ps1" |&$log
}
1 {}
} }

send-avmail.ps1

#cls;
#paths
$dh = $pwd.path
$pv = $psversiontable.psversion.major
$strDate = Get-Date -Format "yyyyMMdd"
#log
$log_file = "$($dh)\mail\log\log$($strDate).txt"
$log = {$input|Tee-Object -FilePath $log_file -Append}
$filename = ''
$rem = {$i = '';1..75|%{$i += '-'};$i} ################################START###################################### #remember
$curentFile = ''
$pop = $pwd
$path = "$($dh)\Mail"
CD $path
#body
try {
if(Test-Path -Path $path ){
Import-Module "$path\MailModule.psm1" -force
$t = Get-Date -Format 'yyyyMMdd_hh_mm_ss'
$smtp = Get-Smtp -Path $path
Get-Date|&$log
#MAX 10
foreach($f in $(ls -Path "$path\outbox\*.csv"|sort-object -Property LastWriteTime -Descending|Select-Object -First 10)){
&$rem|&$log
$curentFile = "$($f.fullname)"
$curentFile|&$log
#ONE CSV FILE PRESENT ON MAIL MESSAGE.
$email = ConvertFrom-MailCsv -Path $curentFile
"$($email.subject) is sending.."
#SEND IT
$smtp.send($email)
"$($email.subject) is sent"
#MOVE IT TO FOLDER SENT WHEN SUCCESS
Move-Item -Path $curentFile -Destination "$path\sent\$($f.name)"
#Tabke a break
sleep 1
}
}
}
catch {
#log error message
$_|&$log
"error occur when sending mail:$curentFile"|&$log
#MOVE IT TO FOLDER error WHEN fail
Move-Item -Path $curentFile -Destination "$path\error\$($f.name)"
}
finally {
#mark with date
Get-Date|&$log
#pop
cd $pop
}

mailmodule.psm1

function import-Zip
{
param([string]$zipfilename, [string] $destination) if(test-path($zipfilename))
{
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
}
} function export-Zip
{
param([string]$sourcefiles, [string]$zipfilename) dir $sourcefiles | foreach-object {
if(!$zipfilename) {
$zipfile = $_.FullName + ".zip";
}
else {
$zipfile = $zipfilename;
} if(!(test-path($zipfile))) {
set-content $zipfile ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18));
( dir $zipfile).IsReadOnly = $false;
} $shellApplication = new-object -com shell.application;
$zipPackage = $shellApplication.NameSpace($zipfile);
$zipPackage.CopyHere(($_.FullName));
}
} function ConvertFrom-MailCsv{
[CmdletBinding()]
param(
[System.String]$Path
) $Path = "$Path"
if(Test-Path -Path $Path){
$tmp = Import-Csv -Path $Path
$mail = New-Object System.Net.Mail.MailMessage #set the from addresses
$MailAddress = $tmp.From
$mail.From = New-Object System.Net.Mail.MailAddress($MailAddress) #set the destination addresses
$MailtoAddress =$tmp.To
$mail.To.Add($MailtoAddress) #set the CC addresses
foreach($cca in $tmp.CC -split ','){
if($cca -ne "" -and $cca -ne $null){
$copy =New-Object System.Net.Mail.MailAddress("$cca");
$mail.CC.Add($copy);
}
}
#set the content
$mail.Subject = $tmp.Subject $mail.Priority = $tmp.Priority
$mail.Body = $tmp.Body #set the attachments
foreach($filename in $tmp.attachments -split ','){
if(Test-Path -Path $filename){
$attachment = new-Object System.Net.Mail.Attachment($filename)
$mail.Attachments.Add($attachment)
}
}
#add to array
return $mail; }
}
function ConvertFrom-Mail{
[CmdletBinding()]
param(
[System.String]$Path
)
begin {
$pop = $pwd
cd $Path
}
process {
[System.Net.Mail.MailMessage[]]$mails = @() foreach($f in $(ls -Path $Path -Name "*.csv")){
$tmp = Import-Csv -Path $f
$mail = New-Object System.Net.Mail.MailMessage #set the from addresses
$MailAddress = $tmp.From
$mail.From = New-Object System.Net.Mail.MailAddress($MailAddress) #set the destination addresses
$MailtoAddress =$tmp.To
$mail.To.Add($MailtoAddress) #set the CC addresses
foreach($cca in $tmp.CC -split ','){
if($cca -ne "" -and $cca -ne $null){
$copy =New-Object System.Net.Mail.MailAddress("$cca");
$mail.CC.Add($copy);
}
}
#set the content
$mail.Subject = $tmp.Subject $mail.Priority = $tmp.Priority
$mail.Body = $tmp.Body #set the attachments
foreach($filename in $tmp.attachments -split ','){
if(Test-Path -Path $filename){
$attachment = new-Object System.Net.Mail.Attachment($filename)
$mail.Attachments.Add($attachment)
}
}
#add to array
$mails += $mail;
} return $mails;
}
end {
cd $pop
} }
function Get-Smtp{
param(
[System.String]$Path
)
begin {
$pop = $pwd
cd $Path
}
process {
$param = Import-Csv ".\smtp.csv"
$smtpServer = $param.Server
$smtpUser = $param.User
$smtpPassword = $($param.Password|ConvertTo-SecureString)
$smtp = New-Object System.Net.Mail.SmtpClient -argumentList $smtpServer
#$smtp.Credentials = New-Object System.Net.NetworkCredential -argumentList $smtpUser,"Isoft1410"#$smtpPassword
$smtp.Credentials = New-Object System.Net.NetworkCredential -argumentList $smtpUser, $smtpPassword
return $smtp;
}
end {
cd $pop
} } function ConvertTo-Mail{
[CmdletBinding()]
param(
$mail,
[System.String]$Path
)
$mail|Export-Csv -Path $Path
} Export-ModuleMember -Function ConvertFrom-Mail, ConvertTo-Mail,Get-Smtp, ConvertFrom-MailCsv,import-Zip,export-Zip

download:

http://download.csdn.net/detail/wangzhpwang/8268477

http://download.csdn.net/detail/wangzhpwang/8268511

Powershell Mail module, 发送outbox 里的全部邮件(一个.csv文件代表一封邮件)的更多相关文章

  1. 从csv文件里取数据作为请求参数,和把返回数据放到一个csv文件

    本来想把登陆后的token放到数组里,下一个参数用,但是貌似不支持数组,暂时先这样用了,并不麻烦,还很方便. 1.添加线程组等必要的东东后,添加csv配置器 2.进行设置 说明:csv文件设置不能读取 ...

  2. 读写文件:每次读入大文件里的一行、读写.CSV文件

    读文件: 传统的读法.所有读出,按行处理: fp=open("./ps.txt", "r"); alllines=fp.readlines(); fp.clos ...

  3. .Net Mail SMTP 发送网络邮件

    刚刚迈入"开发"的行列 一直有一个想法 我什么时候能给我庞大的用户信息数据库给每一位用户邮箱发送推荐信息呢? 刚迈入"编程两个月的时间" 我采用 SMTP 发送 ...

  4. Spring邮件服务:Maven + Spring SMTP Mail (可发送附件)

    1  spring-smtp-mail.xml <?xml version="1.0" encoding="UTF-8"?> <beans x ...

  5. IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol)。

    IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol).IMA ...

  6. 关于 PHPMailer 邮件发送类的使用心得(含多文件上传)

    This is important for send mail PHPMailer 核心文件 class.phpmailer.php class.phpmaileroauth.php class.ph ...

  7. SpringBoot项目实现文件上传和邮件发送

    前言 本篇文章主要介绍的是SpringBoot项目实现文件上传和邮件发送的功能. SpringBoot 文件上传 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 开发准备 环境要 ...

  8. Azure PowerShell (7) 使用CSV文件批量设置Virtual Machine Endpoint

    <Windows Azure Platform 系列文章目录> 请注意: - Azure不支持增加Endpoint Range - 最多可以增加Endpoint数量为150 http:// ...

  9. 如何在一个div标签里显示出另一个网页? <iframe src=" http://www.baidu.com " width="800px" height="200px" scrolling="no" frameborder="0"> </iframe>

    如何在一个div标签里显示出另一个网页? 用在div里用iframe,就像下面的代码 <iframe src=" http://www.baidu.com " width=& ...

随机推荐

  1. android studio 报错,google后无果

    你可能在环境变量中配置了adk的环境变量,同时eclipse可studio公用一个avd,在两个之间切换时过出错

  2. premake Ubuntu下的安装

    premake是个跨平台的编译工具,先看看在Ubuntu下怎么安装. 首先下载,在/usr目录下: sudo wget -O premake-4.4-beta4-linux.tar.gz http:/ ...

  3. 解决外网与内网或内网之间的通信,NAT穿透

    在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行.问题就在于NAT.首先介绍下NAT. NAT的作用NAT(Network Address Translato ...

  4. zoj 1730 / poj 1455 Crazy Tea Party

    这阵子都没怎么写代码,由于开学,忙于各种琐碎的事情,现在静下来了开始跟着暑假的节奏刷题了. 这道题一开是没看清题目-在寝室刷题就是效率不高... 后来才知道,题目意思是,一个环形序列,1minute可 ...

  5. java layout 表格项增加、删除、修改

    实现的内容为:点击表格某项,再点击删除钮,可实现删除点击表格某项,再点击编辑按钮,可实现内容改变点击添加按钮,可实现向表格中添加内容 总结:总的来说中间遇到了很多困难,但是都一步步的解决了. pack ...

  6. /bin/bash^M: 坏的解释器: 没有那个文件或目录

    在Linux下编译cocos2d-x运行脚本的时候出现”/bin/bash^M: 坏的解释器: 没有那个文件或目录“这样的错误如下图. 解决方法: 使用在终端输入sed -i 's/\r$//' ma ...

  7. 图片组件——axure线框图部件库介绍

    我们在后面的组件使用中,都统一使用"从部件区域拖拽图片组件到页面区域中" 1. 图片载入 1.1 将图片组件拖拽到页面区域 1.2 双击图片组件 1.3 选择合适图片,点击打开 1 ...

  8. 基于visual Studio2013解决面试题之0708字符串全排列

     题目

  9. linxu select 返回值

    #include <sys/types.h>#include <sys/socket.h>#include <string.h>#include <netin ...

  10. mui如何增加自定义字体icon图标

    http://ask.dcloud.net.cn/article/128 字体地址:http://www.iconfont.cn/