在VFP中利用API实现批量邮件发送

VFP利用JMAIL发送邮件及附件 VFP利用JMAIL发送邮件及附件,纯代码,效果好VFP利用JMAIL发送邮件及附件,纯代码,效果好 立即下载

在VFP中利用API实现批量邮件发送

作者: 谢古今

用电子邮件与朋友、客户或亲友联系已经成为非常流行的方式。在管理系统中实现电子邮件功能显然是很适合用户和市场发展需求的明智之举。当然实现发送电子邮件功能并不困难,实现批量邮件发送功能才是有更大的实用意义的举措。我们在开发《实验室管理系统labman2001》(下载主页:http://labman.yeah.net)的时候,充分考虑了这样的需求,完整地实现了批量邮件发送功能。当然,实现这样的功能需要用到Windows的API函数,可能许多的用户觉得API非常的神秘,不敢轻易去尝试。事实上,API功能非常强大,许多功能的实现非此不可。其实掌握一定的规律,API就不那么困难了。下面简要说明如何实现。

批量邮件发送表单(如图)

包含四个命令按钮(“选择包含邮件表”、“确认邮件列表”、“转到邮件处理器”、“退出”),两个标签,一个下拉组合框,一个编辑框,一个文本框(与下拉组合框重合)。处理的流程是这样的:程序先检测是否有打开的表,如果有,就不提示,没有就提示目前没有打开的表,可以单击“选择包含邮件表”,选择一个数据表打开。以后就可以从下拉组合框中选择包含邮件地址的字段,然后单击“确认邮件列表”,筛选符合条件的邮件地址,这些邮件地址会出现在编辑框里面。如果想删除或添加邮件地址,就可以在编辑框中进行。接下来单击“转到邮件处理器”,则这些电子邮件地址会被系统默认的邮件接受和发送程序如Foxmail、Outlook等程序接受作为“收件人”,并且出现邮件编辑窗口,在编辑窗口就可以方便地写信啦!下面依次说明核心代码。

“选择包含邮件表”的鼠标单击事件代码:

m.cfilename2 = getfile(“dbf”)  &&显示文件打开选择窗口,选择一个dbf文件

if file(m.cfilename2)= .t.

use &cfilename2 exclusive  &&以独占方式打开表

else

return

endif

thisform.cbomailziduan.RowSourceType = 8  &&确定数据源类型为表结构

thisform.cbomailziduan. RowSource = cfilename2  &&确定数据源名称

下拉组合框cbomailziduan的鼠标单击事件代码:

thisform.txtmailziduan.value = thisform.cbomailziduan.value

“确认邮件列表” 的鼠标单击事件代码:

if dbf(1)==''

if messagebox(“没有打开的表,请选择包含邮件表重试!”,64,“邮件处理”)=1

return

endif

endif

do form frm查找 &&利用vfp本身提供的一个查找类构造一个查找表单。符合条件的记录将被下面的程序利用。

browse nomenu noedit nodelete  &&显示符合条件的记录

m.lcemail=upper(alltrim(thisform.txtmailziduan.value))&&获取电子邮件字段名称

m.lmailok = .f.

&&检查字段是否存在。

for i =1 to fcount

if m.lcemail <> field(i)

else

m.lmailok = .t.

exit

endif

endfor

if m.lmailok == .f.

if messagebox(“表中不存在该字段,请修改字段名重试!”,64,“邮件处理”)=1

return

endif

endif

&&在下面的程序段中,将把符合条件的数据输出到一个文本文件。再把文本内容读入edtmaillist编辑框供编辑修改。

if file(“maillist.txt”)= .t.

delete file  maillist.txt  &&如果临时文件已经存在,则先删除。

endif

COPY TO maillist FIELDS &lcemail TYPE DELIMITED WITH blank

Handlemail = fopen(“maillist.txt”)

m.cmail=''

&&读取邮件地址的程序段。

do while .not. feof(handlemail)

m.cmail = alltrim(fgets(handlemail))+','+m.cmail

enddo

thisform.edtmaillist.value = m.cmail

fclose(handlemail)

if file(“maillist.txt”)= .t.

delete file  maillist.txt

endif

return

“转到邮件处理器” 的鼠标单击事件代码:

xgjfileopen(“mailto:” + thisform.edtmaillist.value)

return

表单的activate事件代码:

SET PROCEDURE TO  XGJUDF

if dbf(1)==''

if messagebox(“没有打开的表,请选择包含邮件表重试!”,64,“邮件处理”)=1

return

endif

endif

thisform.cbomailziduan.RowSourceType = 8  &&指定下拉组合框的数据源类型。

thisform.cbomailziduan.RowSource = alias(1)  &&指定下拉组合框的数据源。

xgjudf中的xgjfileopen()函数

********

函数说明:利用API中的ShellExecute函数,调用相应程序处理文件的打开,如.doc文件用Word打开,发邮件使用默认的邮件处理器。

参数m.cxgjfilename代表文件的名字,如发邮件写m.cxgjfilename=“mailto:labman2001@sina.com”,打开rtf文件可写 m.cxgjfilename=“C:/Documents and Settings/xgj/My Documents/客户.rtf”

********

function xgjfileopen()

parameter m.cxgjfilename

&& 声明ShellExecute函数

DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;

STRING lpszOP,;

STRING lpszFile,;

STRING lpszParams,;

STRING lpszDir,;

INTEGER fsshowcmd

&& 声明GetDesktopWindow函数,该函数激活Windows桌面

DECLARE INTEGER GetDesktopWindow IN win32api

&& 指定从Windows桌面上运行ShellExecute函数

HWND = GetDesktopWindow

lpszOP = “”

&& 指定ShellExecute操作的文件为mailto:labman2001@sina.com

lpszFile = alltrim(m.cxgjfilename)

lpszParams = “”

&&指定ShellExecute的缺省目录为C:/

lpszDir = “C:/”

fsshowcmd = 1

&& 执行ShellExecute命令

LNRETURN=ShellExecute(HWND,lpszOP,lpszFile,lpszParams,lpszDir,fsshowcmd)return

VFP种实现发送邮件,不带附件,变通给手机发送短信。 VFP种实现发送邮件,不带附件,变通给手机发送短信。 如给13980001234@139.com 立即下载

相关推荐

VFP可用的发送接收邮件控件

vfp编程进行收发邮件控件,亲试成功 此文件是MyFll.fll文件不可分割的一部分,包含对MyFll函数库全部说明及示例。 MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api同名的函数,是Win32API的封装。部分函数取自网上开源算法,在相关函数中均有注明。 此源代码使用VC6 sp6开发,采用VFP9 Sp2的库文件,理论上可以应用于VFP6 7 8 9版本。

用 VFP 发送带附件的电子邮件

用 VFP 发送带附件的电子邮件Doug Hennig 提供一个可用于从应用程序中发送 e-mail 的类. 它组合两个 MAPI ActiveX 控件到一个易于使用的类中.在今天,许多许多用户希望能在他们的应用程序中发送 e-mail. 例如, 典型的商业应用程序中的客户表单中可能有一字段用于保存客户的 e-mail 地址. 在这样的应用程序中,没有一种快速的、不需要切换到 Outlook Ex

Try to make a different me. 4976

VFP中的API应用大全

在VFP中调用Windows API编程示例,全部文档来自于网络,个人只是整理了一下,以方便查阅! PDF格式,高清文字版。

vfp中写入文本文件_VFP中操作多种文件

VFP中操作多种文件做为一种数据处理软件,VFP在使用上的简洁是人所共知的。在使用VFP进行应用程序开以时,有时会涉及到一些非数据处理方面的内容,比如在VFP中打开WORD文档、EXCEL图表、利用OE收发电子邮件,这些功能又恰恰是VFP的弱项。通常情况下,我们处理这些问题的方法是使用OLE(现称之为ActiveX)技术来完成。但是,在VFP中要熟练操作OLE对象,又是一件更麻烦的事情。拿用VFP...

weixin_39785858的博客 1628

vfp收发邮件控件的说明书

此文件是MyFll.fll文件不可分割的一部分,包含对MyFll函数库全部说明及示例。 MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api同名的函数,是Win32API的封装。部分函数取自网上开源算法,在相关函数中均有注明。 此源代码使用VC6 sp6开发,采用VFP9 Sp2的库文件,理论上可以应用于VFP6 7 8 9版本。

邮件发送源代码

vfp实现邮件发送,不需要其它控件。 VFP 实现自动发邮件代码 0顶* Win 2000 、XP 以上版本中发邮件的VFP代码 * 可发附件 * 发件无任何提示

VFP调用WIN32API之路,让你的软件更强大

猫猫用WSOCK32.DLL实现了MQTT协议的发送,其实在TCP/IP上面的所有协议都有完整的文档,你都可以去实现了。到了无人区,很多地方都需要我们去探索,去沉淀。 在今天 TCP/IP 处理所有 Internet 上的通信流. 在局域网上也可以运行 TCP/IP.我们可以利用这一点, 并在诸如 FTP, IRC, e-mail, WWW 或其它任何 Internet 标准类型的通信. 要达到这样的目的, 需要使用包含在Windows 中的一个 DLL, 也就是所谓的 WSOCK3...

加菲猫的VFP 2535

手把手教你用DCA1000EVM解析IWR6843毫米波雷达数据(附MATLAB代码)

本文提供了一份详尽的实战指南,手把手教你使用DCA1000EVM采集并解析TI毫米波雷达IWR6843的原始数据。内容涵盖硬件连接配置、mmWave Studio参数设置、LVDS数据流结构解析,并附有核心MATLAB代码,详细演示了从原始二进制文件到距离-速度谱的信号处理全链路,帮助开发者快速掌握数据解析与处理的关键步骤。

terraform7cloud的博客 227

转 Windows API 函数在VFP中的运用

转 Windows API 函数在VFP中的运用 2010年07月23日    Windows API 函数在VFP中的运用       VFP中常用WIN32API函数调用事例   我们在VFP编程时,为了弥补VFP本身功能的不足,常常会用到WIN32API函数   来对VFP的功能行扩展,例如取得系统信息、对注册表进行操作等,但是由于   WIN32API函数是C++的...

hrp091pt 440

不止是回退SDK:深入解读UE5.2编译时那个烦人的C4756警告与INFINITY宏的变迁

本文深入解析了UE5.2源码编译时出现的C4756警告及其背后的技术原因,探讨了Windows SDK中INFINITY宏的变迁对Unreal Engine的影响。文章详细介绍了微软修改INFINITY定义的技术考量,并提供了UE5.2应对此类问题的灵活解决方案,包括通过BuildConfiguration.xml文件精确控制工具链版本,确保构建系统的可重复性和可配置性。

weixin_27180827的博客 310

PaddleOCR PP-OCRv5实战:5分钟搞定身份证信息提取(附完整代码)

本文详细介绍了如何利用PaddleOCR的PP-OCRv5模型,在5分钟内快速搭建身份证信息提取流程。文章从环境搭建、核心代码实战出发,深入解析了PP-OCRv5针对证件识别的优化特性,并提供了从OCR结果到结构化数据的完整处理方案与避坑指南,帮助开发者高效实现AI驱动的自动化信息提取。

salt9的博客 782

VFP调用外部程序

在VFP中如何调用其它程序  ------------------------------------------------------------- Declare Long WinExec In kernel32 String,Long =WinExec("notepad.exe",1) Clear Dlls WinExec(one.exe,SW_SHOW);  里面

xlhilly的专栏 4641

【车联网】Automotive 软件过程能力成熟度模型——ASPICE标准入门介绍

ASPICE标准详细定义了与汽车电子软件开发相关的各种术语和概念,包括软件组件、系统集成、测试和验证等。这些定义确保了所有开发团队在使用相同术语时具有一致的理解。

奶爸的编程之路,也就一周冷个三天 2678

VFP中操作多种文件

在使用VFP进行应用程序开以时,有时会涉及到一些非数据处理方面的内容,比如在VFP中打开WORD文档、EXCEL图表、利用OE收发电子邮件,这些功能又恰恰是VFP的弱项。拿用VFP接入互联网来说,你可以在VFP的表单中加入Microsoft Web浏览器控件,但是如果没有专业的技术文档,你要想顺利地使用浏览器控件,这基本上是不可能的。用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论是VFP,还是JS,还是C,只要能混合起来,都可以发表。

加菲猫的VFP 123

Misc-RAR隐写

题目来自于:XCTF的SimpleRAR,由于涉及到许多新知识,所以写篇小文子记录一下。 一、下载完后是一个压缩包。 里面就有一个flag.txt,打开之后发现有一串字符是flag is not here,而且我们查看他的文件大小,只要十六字节,绝对不可能再藏着什么信息了。 然后把压缩包拉到010editor里面,发现一下子出来好多新的内容,很明显是有夹杂着的附加文件。 二、rar文件头信息。 rar 是由一个一个 block 组成的,每个 block 有以下几个部分 ...

admin的博客 1361

silero-vad 训练自己的数据

silero-vad 训练自己的数据

jacke121的专栏 815

在VFP中如何调用其它程序

在VFP中如何调用其它程序 ————————————————————- 在VFP中我们可以用run来调用由VFP自身生成的.exe文件。命令格式: run c:\..\*.exe 当调用非VFP自身生成的.exe文件时,需要加上绝对路径和参数。 一般来说,用VFP运行非VFP自身生成的可执行文件时,会有一个黑色的窗口显示一下。可以通过加上/n来隐藏这个窗口。例如运行Windows...

weixin_34133829的博客 750

11、RK3566/3568 Android11切割屏幕 长条屏 显示

在使用 RK3566 平台进行 Android 11 开发时,遇到切割屏(长条屏)显示画面不全。本文将详细介绍如何配置,以及如何修改 HWComposer 来调整显示区域,解决图像缩放问题。我这边屏幕是lvds接口的,分辨率1920 1080实际的屏物理尺寸是1920x463。

qq_39451352的博客 252
上一篇: 找回丢失了的FPT文件技巧
下一篇: VFP中用SPT访问SQL Server数据库
vin2000
博客等级 码龄22年 22粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值