Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

dreamMail命令行发送邮件

时 间:2018-09-22 14:27:08
作 者:   ID:19736  城市:佛山
摘 要:办公协同软件是ACCESS数据库及VBA开发,直接是使用outlook发送邮件,经常出现一些问题,所以寻求使用其他的邮件客户端进行了尝试,搜索发现使用mailto命令行的朋友几乎都没能解决发送附件的问题,在“畅邮使用交流群”群主@木头的帮助下得到了完美的解决。
正 文:

使用畅邮CyMail(DreamMail)命令行代码发送邮件的应用案例

解决问题搜索关键词:mailto附件问题、命令行、VBACMDMAPIOUTLOOK,FOXMAIL,DREAMMAIL,CYMAIL

笔者办公协同软件是ACCESS数据库及VBA开发,直接是使用outlook发送邮件,经常出现一些问题,所以寻求使用其他的邮件客户端进行了尝试,搜索发现使用mailto命令行的朋友几乎都没能解决发送附件的问题,在“畅邮使用交流群”群主@木头的帮助下得到了完美的解决。


一、官网下载安装畅邮最新客户端:

http://www.cy-email.com/


二、记事本建立一个文件

文件名固定:F1CBD3E77E274E85AF33018370EBDA65.MAPI

内容为:(前面没有空格)

      Subject: [邮件主题]

      From:[Email]

      To: [收信人]

      CC: [抄送]

      BCC: [暗送]

      Body: [邮件内容,TXT格式]

      Html:[邮件内容, HTML格式]

      SaveAndClose:[是否直接保存并关闭, 1 或者 0]

      SaveAndSend:[是否发送, 1 或者 0]

      Attach:[附件名]

例子:

      Subject:测试

      To: 697336xxxxx@qq.com;abcdxxx@qq.com

      CC: Test1xx@qq.com;zengxiquanxxx@gmail.com

      BCC: woodstockxxx@gmail.com

      Body: 你好,

        这是邮件内容第二行

        这是邮件内容第三行

      SaveAndClose:1

      SaveAndSend:1

      Attach:c:\1.txt

        c:\2.txt

        c:\3.zip

特别注意保存格式:ANSI

三、调用方式

3.1 命令行调用

d:\cyemail\dreammail.exe "c:\.....\F1CBD3E77E274E85AF33018370EBDA65.MAPI"

3.2 直接打开MAPI文件方式调用

MAPI文件设置默认打开方式为cyMail(dreamMail),即鼠标右键打开方式设置一下默认DreamMail,以后直接点击文件即可自动发送。

四、VB/VBA完整测试代码


Private Function GetCyPath() As String      '获得畅邮的安装路径
Dim WSH As Object, cyPath As String
Set WSH = CreateObject("Wscript.Shell")
cyPath = WSH.RegRead("HKEY_CLASSES_ROOT\Applications\DreamMail.exe\shell\open\command\")
GetCyPath = Replace(Left(cyPath, Len(cyPath) - 5), """", "")
GetCyPath = Trim(Replace(GetCyPath, "DreamMail.exe", ""))
Debug.Print GetCyPath
Set WSH = Nothing
End Function




'发送邮件的主程序

Public Sub SendToSubjBodyCy(strTo As String, _  '收件人地址
                   bolHTML As Boolean, _ '忽略本参数
                   strSubj As String, _	'主题
                   strBody As String, _  '邮件内容
                   AttachmentFileName As String, _     '附件
                   Optional AutoSend As Boolean = True) '自动发送与否,暂未使用
                   Dim cyPath As String
                   cyPath = GetCyPath   '取得安装路径
                   '组建文件内容
                   Dim cc1 As String
                   Dim bcc1 As String
                   Dim sv1 As String
                   Dim sv2 As String
                   Dim mailS As String
                   Dim File1 As String
                   Dim s As String

                   sbj1 = "Subject:" & strSubj
                   Addr1 = "To:" & strTo
                   cc1 = "CC:"
                   bcc1 = "bcc:"
                   body1 = "Body:" & strBody
                   File1 = AttachmentFileName
                   sv1 = "SaveAndClose:0"
                   sv2 = "SaveAndSend:1"

 mailS = sbj1 & vbCrLf & Addr1 & vbCrLf & cc1 & vbCrLf & bcc1 & vbCrLf & body1 & vbCrLf & sv1 & vbCrLf & sv2 & vbCrLf & "Attach:" & AttachmentFileName

 Call SaveFile(cyPath & "F1CBD3E77E274E85AF33018370EBDA65.MAPI", mailS, "GB2312")

 s = cyPath & "DreamMail.exe " & cyPath & "F1CBD3E77E274E85AF33018370EBDA65.MAPI"

 Shell s
End Sub




Private Sub SaveFile(FilePath As String, strText As String, Optional Charset As String = "GB2312")

        Dim Obj As Object
        Set Obj = CreateObject("ADODB.Stream")
        With Obj
            .Mode = 3
            .Charset = Charset
            .Open
            .WriteText strText, 0
            .SaveToFile FilePath, 2
        End With
        Set Obj = Nothing
End Sub



Private Sub Command7_Click()

SendToSubjBodyGy "ZQZHUOXXXX@WL3389.CN", False, "TEST" & Now, "test1kkkkk", "C:\1.TxT", True

End Sub


以上代码在ACCESS VBA环境下测试通过。QQ:6093703 欢迎交流。



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助