lp007 2015-09-14 01:45
浏览 1450

PB 使用JMAIL, timer事件 循环发送邮件 死机 哪位高手看下代码有啥问题?

开始使用Mymail.dll ,发送邮件(在timer事件写的发送,即发现有附件即触发发送函数) 一切正常,程序后台运行几周都没问题,后来看见网上说jmail.dll 比mymail.dll好用,就讲程序改用调jmail.dll后,自动执行2天 基本程序就死在那了,资源管理器发下,程序内存占用增长了不少,不知道什么原因 ,哪位高手给指点一下,谢谢

1、定义窗口级别 实例 OLE对象
oleobject lole-jmail
2、定义窗口open 事件creat
String ls_userid,ls_password,ls_sender
Long ll_net
lole_jmail = Create oleobject

ls_userid=uo_send_info.sle_user.text
ls_password=uo_send_info.sle_pass.text
ls_sender = uo_send_info.sle_sender.text

ll_net = lole_jmail.ConnectToNewObject("Jmail.Message")
If ll_net = 0 Then
lole_jmail.Charset="gb2312"
lole_jmail.Encoding="base64"//
lole_jmail.ContentTransferEncoding = "base64"//
lole_jmail.ISOEncodeHeaders=true
lole_jmail.silent=true
lole_jmail.Logging=true
lole_jmail.From=ls_sender
lole_jmail.FromName="有限公司"//ls_userid // 发件人姓名
lole_jmail.MailServerUserName=ls_sender
lole_jmail.MailServerPassword=ls_password // 发件邮箱用户密码
end if

3、在timer 事件 执行 发送函数

of_send(),该函数 5秒执行一次,程序运行2天 基本都死掉,估计问题在这里。。。

核心函数代码如下:
String ls_host
String ls_ready,ls_finished,ls_isattach,ls_flag,ls_subject,ls_body,ls_origpath,ls_origfile,ls_orig
String ls_recipient,lsa_recipient[]
Long ll_cnt,i,j,k,ll_net

gb_running = True
ll_cnt = dw_send.RowCount()
If ll_cnt<=0 Then
MessageBox("系统提示","请先配置收件人地址!")
Return -1
End If

ls_host=uo_send_info.sle_host.text
If IsValid(lole_jmail) Then
For i = 1 To ll_cnt
ls_ready = Trim(dw_send.GetItemString(i,"ready"))
ls_finished = Trim(dw_send.GetItemString(i,"finished"))
ls_isattach = Trim(dw_send.GetItemString(i,"isattach"))
ls_flag = Trim(dw_send.GetItemString(i,"flag"))
ls_recipient = Trim(dw_send.GetItemString(i,"recipient"))
ls_subject = Trim(dw_send.GetItemString(i,"subject"))
ls_body = Trim(dw_send.GetItemString(i,"body"))
ls_origpath = Trim(dw_send.GetItemString(i,"origpath"))
ls_origfile = Trim(dw_send.GetItemString(i,"origfile"))
ls_orig = ls_origpath+ls_origfile

    If ls_flag = 'n' Then Continue;

    If as_repeat = "n"  Then
        If ls_finished = 'y' Then Continue;
    End If

    If ls_ready = 'y' Then

        gf_string2array(ls_recipient,';',lsa_recipient[])
        // 收件人
        lole_jmail.ClearRecipients()
        For j = 1 to upperbound(lsa_recipient[])
            If pos(lsa_recipient[j],'@')>0 Then
                lole_jmail.AddRecipient(lsa_recipient[j])
            End If
        Next
        lole_jmail.Subject=ls_subject
        lole_jmail.Priority=3    // 优先级
        lole_jmail.Body=ls_body //邮件内容

        // 附件   
        If ls_isattach = 'y' Then
            For k = 1 to 1 //只有一个附件
                //lole_jmail.addattachment(plb_attachment.text(i))
                lole_jmail.ClearAttachments()
                lole_jmail.addattachment(ls_orig)
            Next
        End If

        If lole_jmail.Send(ls_host) Then
            mle_1.text=Trim(mle_1.text)+"发送成功:      ["+ls_origfile + "]:     "+"~r~n"
            gf_writelog("发送成功:      ["+ls_origfile + "]")
            If Not of_save_send_log(ls_origfile,ls_recipient) Then
                mle_1.text=Trim(mle_1.text)+"保存log失败:       ["+ls_origfile + "]:     "+"~r~n"
                gf_writelog("保存log失败:       ["+ls_origfile + "]")
            End If
        Else
            mle_1.text=Trim(mle_1.text)+"发送失败:      ["+ls_origfile + "]:     "+"~r~n"
            gf_writelog("发送失败:      ["+ls_origfile + "]")
        End if
    End If
Next

End If
gb_running = False
Return 1

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog