ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 用Excel发邮件:VBA+Jmail实现用Excel拆分数据并发送邮件[发送程序更新了]

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-5-25 21:19 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
数据表的拆分与邮件分发,使用Jmail组件+VBA实现
可用于快速批量拆发数据,比Word的邮件合并要快速便捷多了!像工资条之类的数据用这个拆发很方便!
请按照工作簿中的说明进行Jmail组件的安装。
这个是我平时工作中用到的,有时候分发数据的时候不能大面积的发送,只能一对一的发送,就像发工资条一样,A的数据你只能发给A。Foxmail和Outlook都实现不了这样的批量发送邮件的功能,通过我的不断摸索,可以用VBA调用Jmail组件来实现。不敢藏私,发上来和大家共享!
如果大家需要帮助的话,加QQ群9402339咨询我(非常抱歉,本人QQ好友已到500上限)
点击此处加入群9402339

另外,我还写了一个使用Excel批量发送短信的工具,也欢迎大家批评指正http://club.excelhome.net/thread-513715-1-1.html

     很让人郁闷的事情是,最近我接到大量的QQ好友添加申请,同意之后,那些人上来就开骂,骂我是骗子,仔细了解事情原委之后,才知道有人用我写的这个工具发送大量的行骗邮件。对这些被骗的人我深感歉意。大家需要这个工具的话可以到我的博客下载http://www.xixivi.com

附言:我希望某些人在没有按照我写的那个说明操作之前,不要随便的就攻击别人,先检查一下自己操作的对不对。有好几个人Q问我为什么用不了,我帮他们远程协助后才发现,他们在VBA工程里面没有引用Jmail组件。还有几个人是对SMTP不了解,服务器设置错了,导致邮件发送失败。
另外提醒大家一下,在做SMTP设置的时候,要用发件人信箱服务商的SMTP服务器才可以发送,除非你的SMTP允许你用别的服务商提供的Email签名发信。
比如:SMTP设置的是smtp.163.com,发件人地址设置的是abcde@sina.com,这样的设置是错误的,如果发件人用的是新浪的信箱,那么SMTP服务器也要用新浪的。

工具效果演示

工具效果演示

下载地址:http://www.xixivi.com/article.asp?id=28

[ 本帖最后由 oucwei 于 2010-11-10 11:34 编辑 ]

点评

不能下载  发表于 2013-9-25 22:12

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-5-25 21:41 | 显示全部楼层
下来学习,谢谢分享。

TA的精华主题

TA的得分主题

发表于 2009-5-25 21:49 | 显示全部楼层
楼主是个乐于分享的好同志,这个更值得学习,

TA的精华主题

TA的得分主题

发表于 2009-6-17 12:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢!正需要这个呢?真是瞌睡遇到枕头了。

TA的精华主题

TA的得分主题

发表于 2009-6-23 17:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主在吗?  哇我下了不能用了

TA的精华主题

TA的得分主题

发表于 2009-6-23 17:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
的确 不能用

TA的精华主题

TA的得分主题

发表于 2009-6-25 00:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
总是发送失败,跟邮件服务器有关么?

TA的精华主题

TA的得分主题

发表于 2009-6-25 07:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我拜读网上以下两篇文章也不行
我开始有点怀疑 楼主在发这篇文章时 不知测试过成功没有 请批评


用VBA+Jmail发邮件
阅读(160) 评论(0) 发表时间:2009年02月24日 23:50
本文地址:http://qzone.qq.com/blog/4933188-1235490622

本文标签: JmailMsg Jmail 邮件 Smtp 发件人


据说这属于传说中的宏病毒发邮件的程序
1.下载Jmail组件(网上很多),并注册注册jmail组件:regsvr32 jmail.dll
2.在VBA编辑器里面, 工具---引用--添加JMAIL 4.0 LIBRARY。
3.在excel中添加一个模块
Sub 发送邮件
'Send email
    Subject = "VBA" '邮件标题
    Body = "VBA SEND EMAIL" ' 邮件内容
   '     Body 邮件内容
    isHtml = True '   是否发送Html格式邮件 (true 是)
    HtmlBody = "VBA SEND EMAIL " ' Html格式邮件内容"
    MailTo = "xiaofeng1982@163.com" ' 收件人Email
    From = "xiaofeng1982@163.com" '     '发件人Email
    FromName = "xiaofeng1982@163.com" '发件人姓名
    Smtp = "smtp.163.com"  'smtp服务器
    Username = "xiaofeng1982@163.com" '邮箱用户名
    Password = "" '邮箱密码
   
Select Case JmailSend(attachFile, Subject, Body, isHtml, HtmlBody, MailTo, From, FromName, Smtp, Username, Password)
Case "N"
MsgBox ("发送失败")
Case "Y"
MsgBox ("发送ok")
End Select
End Sub

Function JmailSend(attachFile, Subject, Body, isHtml, HtmlBody, MailTo, From, FromName, Smtp, Username, Password)
'=================================================
'函数名:JmailSend
'作  用:用Jmail发送邮件
'参  数:Subject  邮件标题
'        Body     邮件内容
'        Body     邮件内容
'        isHtml   是否发送Html格式邮件 (true 是)
'        HtmlBody Html格式邮件内容
'    MailTo   收件人Email
'        From     发件人Email
'        FromName 发件人姓名
'        Smtp     smtp服务器
    '     Username 邮箱用户名
'        Password 邮箱密码
'返回值:JmailSend="N" 发送失败 JmailSend="Y" 发送成功
'~~~~~~~~~~suercool~~~~~
'=================================================
Dim JmailMsg
'Set JmailMsg = server.CreateObject("jmail.message")
Set JmailMsg = New jmail.Message
JmailMsg.MailServerUserName = Username '如果是在局域网中可以不要验证
JmailMsg.MailServerPassWord = Password
JmailMsg.AddRecipient MailTo
JmailMsg.From = From
JmailMsg.FromName = FromName
JmailMsg.Charset = "gb2312"
JmailMsg.ContentType = "text/html"
JmailMsg.Priority = 1
JmailMsg.Logging = True
JmailMsg.Silent = True
JmailMsg.Subject = Subject
'JmailMsg.Body = Body
'JmailMsg.AddAttachment = "" ' attachFile
'If isHtml = True Then JmailMsg.HtmlBody = HtmlBody
JmailMsg.HtmlBody = HtmlBody
If Not JmailMsg.Send(Smtp) Then
JmailSend = "N"
Else
JmailSend = "Y"
End If
JmailMsg.Close
Set JmailMsg = Nothing
'MsgBox (JmailSend) '测试时可以用
End Function

4. 保存,关闭excel,重新打开,点击该按钮,即可发送成功!:-) (注意防火墙和杀毒软件阻挡!!)







可以在网络上搜索 w3 JMail Personal V4.3,或者直接到官网 http://www.dimac.net 去下载,w3 Jmail 的授权方式是免费的。默认位置安装好 JMail 之后,是在 C:\Program Files\Dimac\w3JMail4 可以看到 Examples 目录、jmail.dll、w3jmail4.pdf 和 readme.txt 文件。可以查阅w3jmail4.pdf 中的使用帮助。我们所要的文件其实只是那个 jmail.dll,安装程序会自动帮你注册 jmail.dll。若未运行安装程序,只是拷贝了 jmail.dll,则要运行 regsvr32 jmail.dll 注册它即可。

可以看看那个 Examples 目录,发现可支持 ASP、Assembly、Delphi、Visual C++、xml,自然像 JS、VBS、VB、VBA 那样的语言中也能使用。它不仅可以用来发送邮件,也能通过 POP 协议接收邮件。下面看一段接收邮件的代码:


'使用 JMail 组件来发送邮件   
Function JmailSend(Subject, HtmlBody, MailTo)   
    Dim JmailMsg As New jmail.Message   
    With JmailMsg   
        .Encoding = "GBK"  
        .MailServerUserName = "Unmi" 'smtp 验证用户名   
        .MailServerPassWord = "xxxxxx" 'smtp 验证密码   
        .AddRecipient MailTo '收件人   
        .AddRecipientCC "fantasia@sina.com" '抄送   
        .AddRecipientBCC "broodwar@2911.net" '暗送   
        .From = "unmi@2911.net"  
        .FromName = "隔叶黄莺"  
        .Charset = "GBK"  
        .ContentType = "text/html"  
        '.Priority = 1  '重要级别   
        .Logging = True '为 True,可用 JmailMsg.Log 获得与服务器交互的详细日志信息   
        .Silent = True '为 True,出错时会有 JmailMsg.ErrorMessage 回送消息   
        .Subject = Subject   
        '.Body = HtmlBody    '作为纯文本内容发送,设置 Body 属性   
        .HtmlBody = HtmlBody '用这个可以发送 Html 内容   
           
        .AddAttachment "c:\users.ctl"  '发送附件   
           
        If .Send("mail.2911.net") Then '指定邮件服务器   
            JmailSend = "发送成功"  
        Else  
            JmailSend = JmailMsg.ErrorMessage   
        End If  
        MsgBox JmailMsg.Log   
        .Close   
    End With  
    Set JmailMsg = Nothing  
End Function  

在 Excel 的 Microsoft Visual Basic 编辑器中要引用注册的“JMail 4.0 Library”, 代码中的 AddXxx 方法可以执行多次,如增加多个收件人、多个附件等。真正实现批量全自动发送,程序中可动态的选择邮件服务器。

用 w3 JMail 组件比起调用 Outlook 可要方便的多,Outlook 可以不用配置,发布时只需要带个 jmail.dll 动态库,用 regsvr32 jmail.dll 注册一下即可。

[ 本帖最后由 泓() 于 2009-6-25 07:54 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-25 08:42 | 显示全部楼层
原帖由 lenny_long 于 2009-6-23 17:11 发表
楼主在吗?  哇我下了不能用了

Q我吧 ,我帮你看看

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-25 08:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 aoz840525 于 2009-6-25 00:51 发表
总是发送失败,跟邮件服务器有关么?

如果出现发送失败,一般情况下是服务器配置的有问题
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-3 01:30 , Processed in 0.039196 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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