把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. OCP-1Z0-042-V12.39-51题

    51.Which two statements regarding archive log destinations are true? 题目解析: A(正确)因为:.归档日志最多可以配置10个 B和 ...

  2. Debian安装Nexus

    前置条件 安装jdk (如果使用 nexus-2.6 以上版本需要jdk7) 1 apt-get install openjdk-6-jre / apt-get install openjdk-6-j ...

  3. 基于visual Studio2013解决面试题之1310随机数

     题目

  4. boost uuid 学习笔记

    #include <vector>#include <iostream>#include <boost/uuid/uuid.hpp>#include <boo ...

  5. git使用说明

    1,git clone git://github.com/schacon/simplegit.git git工作目录,暂存目录,本地代码仓库都有代码了. 2,git pull git://github ...

  6. uva 816 BFS求最短路的经典问题……

    一开始情况没有考虑周全,直接WA掉了, 然后用fgets()出现了WA,给改成scanf就AC了 题目不是很难,用心就好…… #include <iostream> #include &l ...

  7. 随想录(移动app下的生活)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 我算不上非常潮的人,使用移动app的时间也非常短.换成android手机也是近期一年的事情,可 ...

  8. 4. Qt的容器类

      Qt提供来一组通用的基于模板的容器类. 一. QList类,QLinkedList类 和  QVector类         QList类.QLinkedList类和QVector类常常使用到的Q ...

  9. Oracle中如何插入特殊字符:& 和 ' (多种解决方案)

    今天在导入一批数据到Oracle时,碰到了一个问题:Toad提示要给一个自定义变量AMP赋值,一开始我很纳闷,数据是一系列的Insert语句,怎么会有自定义变量呢?后来搜索了一下关键字AMP发现,原来 ...

  10. ASP.NET - 在线编辑器(KindEditor)

    效果: 项目结构: 前端代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...