作者:乔山办公网日期:
返回目录:excel表格制作
以前研究过类似的,好像Outlook有防病毒保护copy,不允许直接由Vba发送邮件,会出现提示框的。只有人为按知确认键后才能发送。所以我当时是用宏自动生成草稿,最后由人工统一发送。
当初也找到过第道三方软件来解决这个问题,但现在忘了名称了。
Set olApp = CreateObject("Outlook.Application")
Set newItem = olApp.CreateItem(olMailItem)
newItem.To = "邮箱地址来,多个自地址以分号隔zd开"
newItem.Subject = "abc"
newItem.Body = "abc"
newItem.Send
Excel不是编程语言,内嵌的VBA有编程功能,可以扩展Excel的应用。Excel也确实内嵌了邮件收发的功能,但添加的附件一般都是当前工作表或工作簿抄。
SendMail 方法
使用已安装的邮件系统发送工作簿。
expression.SendMail(Recipients, Subject, ReturnReceipt)
expression 必需。该表达式返回一个 Workbook 对象。
Recipients Variant 类型,必需。以文本形式指定收件人的名称,如果有多个收件人,则使用文本字符串数袭组。必须至少指定一个收件人,而且所有收件人名单都添加到“收件人”中。百
Subject Variant 类型,可选。指定消息的主题。如果省略该参数,则使用文档名称。
ReturnReceipt Variant 类型,可选。如果该度值为 True,则要求返回回执;如果该值为 False,则不要求返回回执。默认值为 False。
示例
本示例将当前活动工作簿传送给一个收件人。
ActiveWorkbook.SendMail recipients:="Jean Selva"
发送邮件代码:
Sub 邮件发636f70797a64333送()
Dim cm As New CDO.Message 'CDO.message是一个发送邮件的对象
'Set cm = CreateObject("CDO.Message") '创建对象 '引用路径:C:\Windows\system32\cdosys.dll'这个是要引用的,如果不引用,可以用这句也行
cm.From = "" '设置发信人的邮箱"
cm.To = "" '设置收信人的邮箱
cm.Subject = "主题:邮件发送试验" '设定邮件的主题
'cm.TextBody = '邮件正文,使用文本格式发送邮件,如果太复杂了就不行了,要用下面这种
cm.HtmlBody = "邮件发送试验^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" '使用html格式发送邮件
cm.AddAttachment "F:\学习资料\vba\a.xlsx" '发的附件名与地址
stUl = "http://schemas.microsoft.com/cdo/configuration/" '微软服务器网址,固定的,不用改的
With cm.Configuration.Fields
.Item(stUl & "smtpserver") = "smtp.qq.com" 'SMTP服务器地址
.Item(stUl & "smtpserverport") = 25 'SMTP服务器端口
.Item(stUl & "sendusing") = 2 '发送端口
.Item(stUl & "smtpauthenticate") = 1 '需要提供用户名和密码,0是不提供 '
.Item(stUl & "sendusername") = "30687724" '发送方邮箱名称,不用输入@后面的东西
.Item(stUl & "sendpassword") = "suxiong30687724" '发送方邮箱密码
.Update
End With
cm.Send '最后当然是执行发送了
Set cm = Nothing
'发送成功后即时释放对象
End Sub