Dim MyOutlookApp As Outlook.Application '引用outlook
Set MyOutlookApp = New Outlook.Application
'下面有两种设置模式,一种是设置文件夹,然后按文件夹item设置,常用于读取已有的邮件,另一种是直接用mailitem设置,常用于编辑要发送的邮件
'①设置item
Dim MyFolder As Outlook.MAPIFolder
Set MyFolder = MyOutlookApp.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("第一层").Folders("第二层")
Set item = MyFolder.items(i) '可以用i遍历文件夹内的邮件,一般用倒序从新到旧
'MyFolder.Items.Count 文件夹内邮件的总数
'item.body '邮件内容
'item.Subject '邮件标题,需要注意单独保存邮件时,邮件标题会包含Windows不允许存在于文件名的字符
'item.ReceivedTime '邮件发送日期
'item.Attachments.Count '邮件附件总数,会计算邮件正文包含的图片、表情
'Set att = item.Attachments(k) '存附件的时候,可以考虑遍历附件后再保存
'att.SaveAsFile PathName & TableName & suffix
'②设置邮件内容
Dim OutMail As Outlook.MailItem
Set OutMail = MyOutlookApp.CreateItem(olMailItem)
With OutMail
.Display '显示邮件,否则会隐藏在任务栏
.To = "123@567.com;345@456.com" '收件人
.cc = "123@567.com;345@456.com" '抄送人
.Subject = "问候信" '标题
.Attachments.Add PathName & "\" & "789" & ".pdf" '添加附件
'可以用body和htmlbody,但是body会用默认格式,不方便多行的格式调整,所以后者会好一点
.HTMLBody = "<font face=等线 size=3>" & "Dear <br><br><br>" & "请查收文件,谢谢!<br><br>" & "</font>" & GetSignature()
End With
Function GetSignature() '引用签名函数
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim SigPath As String
SigPath = "C:\Users\YourName\AppData\Roaming\Microsoft\Signatures\1.htm"
Dim f_SignatureObj
If Dir(SigPath, vbDirectory) <> "" Then
Set f_SignatureObj = fso.OpenTextFile(SigPath, 1, False, 0)
GetSignature = f_SignatureObj.ReadAll
f_SignatureObj.Close
End If
Set fso = Nothing
End Function