注册 登录
编程论坛 VFP论坛

VFP怎样将信息发至指定QQ邮箱?

lgsh001 发布于 2018-02-14 16:27, 5642 次点击
VFP怎样将信息发至指定QQ邮箱?
13 回复
#2
吹水佬2018-02-14 21:21
只有本站会员才能查看附件,请 登录
#3
lgsh0012018-02-14 21:55
也就是说很难实现了?
#4
whinda2018-02-14 23:49
用JMail,QQ收件箱要开通SMPT
#5
gs25367856782018-02-18 07:24
你手动发送,不就可以了?
#6
厨师王德榜2018-02-25 12:47
以前帮别人写过一个群发邮件的东东,好像要用到MS的OCX控件,时间久了,记不到了。
只有本站会员才能查看附件,请 登录

#7
潇洒人间一剑仙2018-03-01 12:48
我用控件做过,然而控件的注册是个问题,我不会在代码里注册ocx控件,所以连编出来的程序在有的电脑上可以发邮件,有的电脑上失败。
#8
潇洒人间一剑仙2018-03-01 12:48
我用控件做过,然而控件的注册是个问题,我不会在代码里注册ocx控件,所以连编出来的程序在有的电脑上可以发邮件,有的电脑上失败。
#9
lgsh0012018-03-04 10:58
厨师王德榜老师能给提供相关代码吗?
#10
liuxingang282018-03-05 09:11
以下是本人工资系统中的一个自定义函数,可发送邮件:
程序代码:
* 功能:邮件发送
* 参数:tcMail收件人,tcCC抄送,tcBCC密送,tcSubject主题,tcBody正文,tcAttFile附件,tcSmtp发送服务器,tcFrom发件人,tcUid用户名,tcPwd口令
FUNCTION SendMail(tcMail,tcCC,tcBCC,tcSubject,tcBody,tcAttFile,tcSmtp,tcFrom,tcUid,tcPwd)
    LOCAL cError,cErrMsg,m,n,i,j,k,objFields
    m.cErrMsg = ""
    m.cError = ON("ERROR")
    ON ERROR m.cErrMsg = MESSAGE()

    *服务器设置
    m.objMail = CREATEOBJECT("CDO.Message")

    * 清除原默认配置
    m.objFields = m.objMail.Configuration.Fields
    FOR i = 0 TO objFields.Count - 1
        m.objFields.Delete(i)
    ENDFOR
    m.objFields.Update

    * 设置发信服务配置
    m.objConf = m.objMail.Configuration
    m.objConf.Fields.Append("http://schemas./cdo/configuration/languagecode",2)
    m.objConf.Fields(0).Value = "zh-cn"
    m.objConf.Fields.Append("http://schemas./cdo/configuration/postusing",2)
    m.objConf.Fields(1).Value = 0
    m.objConf.Fields.Append("http://schemas./cdo/configuration/sendemailaddress",2)
    m.objConf.Fields(2).Value = m.tcFrom
    m.objConf.Fields.Append("http://schemas./cdo/configuration/sendpassword",2)
    m.objConf.Fields(3).Value = m.tcPwd
    m.objConf.Fields.Append("http://schemas./cdo/configuration/sendusername",2)
    m.objConf.Fields(4).Value = m.tcUid
    m.objConf.Fields.Append("http://schemas./cdo/configuration/sendusing",2)
    m.objConf.Fields(5).Value = 2
    m.objConf.Fields.Append("http://schemas./cdo/configuration/smtpaccountname",2)
    m.objConf.Fields(6).Value = "网易服务器"
    m.objConf.Fields.Append("http://schemas./cdo/configuration/smtpauthenticate",2)
    m.objConf.Fields(7).Value = 1
    m.objConf.Fields.Append("http://schemas./cdo/configuration/smtpconnectiontimeout",2)
    m.objConf.Fields(8).Value = 180
    m.objConf.Fields.Append("http://schemas./cdo/configuration/smtpserver",2)
    m.objConf.Fields(9).Value = m.tcSmtp
    m.objConf.Fields.Append("http://schemas./cdo/configuration/smtpserverport",2)
    m.objConf.Fields(10).Value = 25
    m.objConf.Fields.Append("http://schemas./cdo/configuration/usemessageresponsetext",2)
    m.objConf.Fields(11).Value = .T.
    m.objConf.Fields.Append("urn:schemas:calendar:timezoneid",2)
    m.objConf.Fields(12).Value = 21
    m.objConf.Fields.Update

    * 邮件设置 注:邮件地址和附件文件可以同时多个,在字符串中使用分号(;)分隔
    m.objMail.To = m.tcMail            && 收件人
    m.objMail.CC = m.tcCC            && 抄送
    objMail.BCC = m.tcBCC            && 密件抄送
    m.objMail.Subject = m.tcSubject    && 主题
    m.objMail.TextBody = m.tcBody    && 内容
    objMail.From = m.tcFrom            && 发件人(服务器要校验的)

    * 根据附件列表添加附件
    IF !EMPTY(m.tcAttFile)
        m.tcAttFile = m.tcAttFile + ";"
        m.j = 0
        m.n = OCCURS(";", m.tcAttFile)
        FOR m.i = 1 TO m.n
            m.k = AT(";", m.tcAttFile, m.i)
            m.cFile = SUBSTR(m.tcAttFile, m.j+1, m.k-m.j-1)
            IF !FILE(m.cFile)
                MESSAGEBOX("附件文件[" + m.cFile + "没找到!",16,"提示")
                ON ERROR &cError
                RETURN m.cErrMsg
            ENDIF
            objMail.AddAttachment(m.cFile)    &&添加附件
            m.j = m.k
        ENDFOR
    ENDIF

    * 发送邮件
    m.objMail.Send
    ON ERROR &cError
    RETURN m.cErrMsg
ENDFUNC
以下是调用示例:
cTo = 'test@'
cSub = '2018年3月份工资'
cSmtp = 'smtp.'
cFrom = '人力资源处<liuxingang287@ '
cUid = 'liuxingang287'
cPwd = '12345'
cBody = '姓名:张三'+chr(13)+'实发工资:4850'

cErrMsg = SendMail(cTo,"","",cSub,cBody,"",cSmtp,cFrom,cUid,cPwd)
IF EMPTY(cErrMsg)
    MESSAGEBOX("邮件发送成功! ",64,"系统消息")
ELSE
    MESSAGEBOX(cErrMsg,64,"系统消息")
ENDIF
#11
yewxj2018-03-06 08:57
回复 10楼 liuxingang28
只有本站会员才能查看附件,请 登录

报错 “ole idispatch 异常代码 0 出自 CDO.Message.1:与服务器的传输连接失败。”
请问是哪里出了问题?
#12
厨师王德榜2018-03-06 17:32
回复 9楼 lgsh001
当时还没有  木瓜老师的库,依稀记得是用的Outlook的MSAPI控件,代码写得很笨重,就不献丑了。
后来有了木瓜老师的库,这个变得简单了,两个函数就搞定了。
一个SmtpNewMail(hSmtpHdl,cSender,cReceiver,cSubject,cBody[,cFileList])
一个 SmtpSend(hSmtpHdl,cServer,cUserName,cPassword)
你可以搜索一下木瓜的第三方库,所以这个代码你自己摸索一下,不难的。
在这里 再次感谢木瓜老师的奉献。
#13
fctxzx2018-08-08 15:22
用木瓜的MyFll
#14
hu9jj2018-08-08 20:50
关键是要取得发送邮件服务器POP3许可,现在大部分邮件服务商不开放这个许可,所以不容易实现。以前很多免费邮箱都开放POP3和SMTP,前者是发送邮件的服务器,后者是接收邮件的服务器,将这些设置的OUTLOOK中,在VFP中添加MS的相关控件,就可以用下列代码发送邮件了。

thisform.OleMsess.signon                                    &&打开电子邮件句柄
thisform.olemmess.sessionid = thisform.olemsess.sessionid   &&将句柄传给邮件编辑程序
thisform.                                   &&构成一个消息
thisform.olemmess.msgnotetext = ""                      &&组成邮件内容
thisform.olemmess.msgsubject = " "                  &&指定邮件标题
thisform.olemmess.MsgIndex = -1
thisform.olemmess.RecipAddress = "xx@       &&邮箱地址
thisform.olemmess.send()                                    &&发送邮件
thisform.olemsess.signoff                                   &&关闭电子邮件句柄
1