ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 28606|回复: 31

[原创] Excel通过VBA调用CDO发邮件

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-11-24 19:49 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:邮件应用开发
本帖最后由 轩辕轼轲 于 2011-12-12 16:08 编辑

前期我写了很多关于用VBA调用Jmail群发邮件的工具,其实不仅仅Jmail可以做到,其实Windows自带的cdosys.dll就可以直接调用发邮件。

两者相比而言,Jmail相对比较好控制,但是需要安装Jmail.dll,CDO是系统自带的,可以直接调用。因而我自己也做了一个用CDO发邮件的东东。代码如下:

[code=vb] '代码由轩辕轼轲编写,如对Excel发邮件这个偏门主题感兴趣,可加入QQ群141616426,入群请输入验证代码:Excel发邮件
Sub CDOSENDEMAIL()
Dim CDOMail As Variant
On Error Resume Next '出错后继续执行
Application.DisplayAlerts = False '禁用系统提示
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly '将工作簿设置为只读模式
Set CDOMail = CreateObject("CDO.Message") '创建对象
CDOMail.From = "10000@qq.com" '设置发信人的邮箱
CDOMail.To = "10000@qq.com" '设置收信人的邮箱
CDOMail.Subject = "主题:用CDO发送邮件试验" '设定邮件的主题
'CDOMail.TextBody = "文本内容" '使用文本格式发送邮件
CDOMail.HtmlBody = "当您看到此封邮件,表明CDO设置正确" '使用Html格式发送邮件
CDOMail.AddAttachment ThisWorkbook.FullName '发送本工作簿为附件
STUl = "http://schemas.microsoft.com/cdo/configuration/" '微软服务器网址
With CDOMail.Configuration.Fields
.Item(STUl & "smtpserver") = "smtp.qq.com" 'SMTP服务器地址
.Item(STUl & "smtpserverport") = 25 'SMTP服务器端口
.Item(STUl & "sendusing") = 2 '发送端口
.Item(STUl & "smtpauthenticate") = 1 '远程服务器需要验证
.Item(STUl & "sendusername") = "10000" '发送方邮箱名称
.Item(STUl & "sendpassword") = "password" '发送方邮箱密码
.Item(STUl & "smtpconnectiontimeout") = 60 '连接超时(秒)
.Update
End With
CDOMail.Send '执行发送
Set CDOMail = Nothing '发送成功后即时释放对象
If Err.Number = 0 Then
MsgBox "成功发送邮件", , "温馨提示" '如果没有出错,则提示发送成功
Else
MsgBox Err.Description, vbInformation, "邮件发送失败" '如果出错,则提示错误类型和错误代码
End If
ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite '将工作簿设置为读写模式
Application.DisplayAlerts = True '恢复系统提示
End Sub[/code]

这段代码的作用就是将当前工作簿发往指定的信箱,这个在我们做Excel调查问卷的时候很有用处,可以将工程里面封装上这么一段代码,问卷做完之后,点击一个提交按钮直接发送到指定的信箱即可。如对Excel发邮件这个偏门主题感兴趣,可加入QQ群141616426,入群请输入验证代码:Excel发邮件

更多Excel发邮件的主题内容请移步http://www.xixivi.com

TA的精华主题

TA的得分主题

发表于 2011-11-24 20:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习一下。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-11-26 16:56 | 显示全部楼层
本帖最后由 轩辕轼轲 于 2011-11-26 16:56 编辑
jiminyanyan 发表于 2011-11-24 20:49
学习一下。。。


呵呵,其实用Jmail发更稳定

TA的精华主题

TA的得分主题

发表于 2011-11-26 18:53 | 显示全部楼层
jmail可以用来攻击,发匿名邮件,cdo不行,必须指定发送人的账号和密码

TA的精华主题

TA的得分主题

发表于 2011-11-26 19:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-22 00:48 | 显示全部楼层
老大,邮件是可以发了,如何读呢?有新代码出来没?

TA的精华主题

TA的得分主题

发表于 2011-12-22 00:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不错,留个记号           

TA的精华主题

TA的得分主题

发表于 2011-12-26 15:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-1-18 14:40 | 显示全部楼层

请问如果发公司内部的outlook邮箱,而且不能上外网这个方法好用不?

TA的精华主题

TA的得分主题

发表于 2012-2-2 16:38 | 显示全部楼层
一直在使用Jmail发送,也学习一下CDO的。
感谢楼主!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 05:32 , Processed in 0.046782 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表