PB powerbuilder 电子邮件发送

本文详细介绍PB使用jmail.dll发送电子邮件的方法

用到的第三方库jmail 及完整示例下载
链接:https://pan.baidu.com/s/1gc_f07cx-saxSZeAdkvApw
提取码:4hix


1、jmail注册

integer li_flag
string  ls_value

li_flag = registryget('HKEY_CLASSES_ROOT\CLSID\{0D821067-FCF9-4704-9287-0D8F76FE6513}\ProgID','',regstring!,ls_value)

if li_flag = -1 then 
	DllRegisterServer()
end if

2、发送方法

int     i
string  ls_address[]
string  ls_attachment[]
boolean lb_return
oleobject lole_jmail

if not of_check() then return
lole_jmail                    = create oleobject
lole_jmail.ConnectToNewObject("Jmail.Message")
lole_jmail.Charset            = "GB2312"
lole_jmail.ISOEncodeHeaders   = true
lole_jmail.silent             = true
lole_jmail.Logging            = true
lole_jmail.From               = is_from_addr  //显示在邮件中
lole_jmail.FromName           = is_from_name  //发件人名称
lole_jmail.Subject            = as_subject    //邮件标题
lole_jmail.MailServerUserName = is_from_addr  //发件箱登录名
lole_jmail.MailServerPassword = is_pwd        //发件邮箱用户密码

ls_address = of_split(as_receive_addr,'|')    //收件人
for i = 1 to upperbound(ls_address)
	lole_jmail.AddRecipient(ls_address[i])	
next

ls_attachment = of_split(as_attachment,'|')   //附件
for i = 1 to upperbound(ls_attachment)
	lole_jmail.addattachment(ls_attachment[i])
	messagebox('',ls_attachment[i])
next

lole_jmail.Priority = 3                       //优先级
lole_jmail.Body     = as_content              //邮件内容

if lole_jmail.Send(is_smtp) then
	messagebox("",'邮件发送成功!')
else
	messagebox("",'邮件发送失败!')
end if

lole_jmail.Close()
destroy lole_jmail

一共需要传入8个参数:

as_smtp        邮箱服务器地址
as_from_addr   发件箱账号
as_pwd			发件箱密码			  
as_from_name   发件人名称

as_receive_addr  收件人邮箱地址,多个地址用'|'分割
as_subject       邮件标题
as_content       邮件正文内容
as_attachment    附件路径 多文件用'|'分割
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
/这个是一个成功的声明 FUNCTION int fsendemail(ref String sSmtpServer, ref String sSenderId, & ref String sPsw, ref String sSenderName, ref String sRcvAddr,& ref String sSenderAddr,ref String sCCAddr, & ref String sBCCAddr, ref String sSubject, & ref String sContent, ref String sAttach) Library "PSdEmail_dll.dll" 代码如下 //mail_url放邮件地址,as_mailtext放邮件内容,mail_cc是邮件的抄送地址 //as_subject是邮件主题,as_filename是附件的文件名,as_pathname是附件的完整路径名 string ls_name mailsession lms_data mailmessage lmms_message mailreturncode lmr_value integer li_i //产生邮件会话对象mses lms_data = create mailsession //邮件登录 lmr_value = lms_data.maillogon(mailnewsession!) if lmr_value mailreturnsuccess! then gnv_base.of_message("真不幸,邮件注册失败") return -1 end if //标题 lmms_message.subject = sle_subject.text //正文 lmms_message.notetext = trim(mle_content.text) + ' ' ////附件 //if as_pathname '' or as_filename '' then // mmsg.attachmentfile[1].pathname=as_pathname // mmsg.attachmentfile[1].filename=as_filename //end if //******************************校验收件人邮件地址是否是合法地址***************************// //原收件人 ls_name = sle_rcv.text lmr_value = lms_data.mailResolveRecipient(ls_name) if lmr_value = mailReturnSuccess! THEN lmms_message.Recipient[1].RecipientType = mailto! lmms_message.Recipient[1].address = "liuzhp@huadong.net" lmms_message.Recipient[1].name = "liuzhp@huadong.net" elseif lmr_value = mailReturnFailure! THEN gnv_base.of_message('收件人地址错误,请检查') return -1 else gnv_base.of_message('收件人地址错误,请检查') return -1 end if //发送邮件 lmr_value = lms_data.mailsend(lmms_message) if lmr_value mailreturnsuccess! then messagebox("邮件发送","邮件发送失败!"+char(10)+char(13)+'请检查:'+char(10)+char(13)+& '1.附件路径和名称是否正确.'+char(10)+char(13)+& '2.本地outlook配置是否正确.'+char(10)+char(13)+& '3.如以上都正确,请与系统管理员联系!') return -1 elseif lmr_value = mailreturnsuccess! then // messagebox("邮件发送","邮件发送完毕!") end if lms_data.maillogoff() //退出登录 destroy lms_data //取消邮件会话 return 1 String ls_RcvAddr //收件人 String ls_CcAddr //转发 String ls_BccAddr //暗送 String ls_Sub //主题 String ls_Content //内容 String ls_Attach = ''//附件,多个附件由ATTACHSPLIT分隔 Constant String ATTACHSPLIT = '|' //附件的分隔符号 Integer li_Rtn //返回值,0:发送成功,1:发送失败 pointer oldpointer // Declares a pointer variable oldpointer = SetPointer(HourGlass!) ls_RcvAddr = sle_Rcv.Text //收件人 ls_CcAddr = sle_CC.Text //转发 ls_BccAddr = sle_BCC.Text //暗送 ls_Sub = sle_Subject.Text //主题 ls_Content = mle_Content.Text //内容 Long ll_Row, ll_RowCnt //把附件用ATTACHSPLIT连接起来 ll_RowCnt = dw_Attach.RowCount() FOR ll_Row = 1 TO ll_RowCnt ls_Attach = ls_Attach + dw_Attach.Object.FilePath[ll_Row] +& dw_Attach.Object.FileName[ll_Row] + ATTACHSPLIT NEXT //发送 li_Rtn = fSendEmail(is_Server, is_SenderId , is_Psw, is_SenderName, is_SenderAddr,ls_RcvAddr, ls_CcAddr, ls_BccAddr, ls_Sub, ls_Content,ls_Attach) if li_rtn = 0 then gnv_base.of_message('邮件发送成功!') else gnv_base.of_message('邮件发送失败!') end if SetPointer(oldpointer) li_Rtn = fSendEmail(is_Server, is_SenderId , is_Psw, is_SenderName, is_SenderAddr, & ls_RcvAddr, ls_CcAddr
PB PowerBuilder 是一种用于开发各种商业应用程序的集成开发环境(IDE),它提供了许多强大的功能和工具。如果要在 PB PowerBuilder 中实现类似 Excel 的筛选功能,需要使用一些特定的技术和方法。 首先,我们可以使用 DataWindow 控件来实现数据的筛选。通过设置 DataWindow 的过滤条件和排序功能,可以轻松实现数据的筛选。 其次,可以使用 DataStore 对象来处理数据的检索和筛选。DataStore 是一个用于缓存和处理数据的对象,它可以使用 SQL 查询语句来检索和筛选数据。 另外,可以通过使用 DataWindow 的自定义过滤功能来实现更精确的筛选。自定义过滤允许用户根据特定的条件和选择来筛选数据,例如使用特定列的值进行筛选。 此外,通过使用 PowerScript 编写自定义代码,可以实现更复杂的筛选逻辑。PowerScript 是 PB PowerBuilder 的编程语言,可以使用它来编写事件和函数,以实现特定的功能和逻辑。 最后,可以使用 PB PowerBuilder 的表格控件来显示筛选后的数据。表格控件允许用户以表格的形式查看和编辑数据,可以使用 DataWindow 控件和 DataStore 对象中的数据来填充表格。 总之,要在 PB PowerBuilder 中实现类似 Excel 的筛选功能,可以使用 DataWindow 控件、DataStore 对象和 PowerScript 编写自定义代码来实现数据的检索、筛选和显示。这些功能的结合使用可以为用户提供类似于 Excel 的筛选体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值