使用CQ API使用Email Rule发送邮件注意

通过API去改变CQ的状态或者内容的时候,触发Email-Rule需要注意。调用这个API或者说外部程序的用户必须设置email选项,否则将无法发出邮件。一定要注意,Email的设置在客户端“视图——电子邮件选项”内进行设置。

 

若不使用Email Rule去触发邮件,可在程序中加入Email代码,通过winsock发送邮件。

 

Dim Response As String, Reply As Integer, DateNow As String
Dim first As String, Second As String, Third As String
Dim Fourth As String, Fifth As String, Sixth As String
Dim Seventh As String, Eighth As String
Dim Start As Single, Tmr As Single

 

Sub SendEmail(MailServerName As String, FromName As String, FromEmailAddress As String, ToName As String, ToEmailAddress As String, EmailSubject As String, EmailBodyOfMessage As String)
         
   
If Winsock1.State = sckClosed Then ' Check to see if socet is closed
    Winsock1.LocalPort = 0 ' Must set local port to 0 (Zero) or you can only send 1 e-mail pre program start
    DateNow = Format(Date, "Ddd") & ", " & Format(Date, "dd Mmm YYYY") & " " & Format(Time, "hh:mm:ss") & "" & " +0800"
    first = "mail from:" + Chr(32) + FromEmailAddress + vbCrLf ' Get who's sending E-Mail address
    Second = "rcpt to:" + Chr(32) + ToEmailAddress + vbCrLf ' Get who mail is going to
    Third = "Date:" + Chr(32) + DateNow + vbCrLf ' Date when being sent
    Fourth = "From:" + Chr(32) + FromName + vbCrLf ' Who's Sending
    Fifth = "To:" + Chr(32) + ToName + vbCrLf ' Who it going to
    Sixth = "Subject:" + Chr(32) + EmailSubject + vbCrLf ' Subject of E-Mail
    Seventh = EmailBodyOfMessage + vbCrLf ' E-mail message body
    Ninth = "X-Mailer: EBT Reporter v 2.x" + vbCrLf ' What program sent the e-mail, customize this
    Eighth = Fourth + Third + Ninth + Fifth + Sixth  ' Combine for proper SMTP sending

    Winsock1.Protocol = sckTCPProtocol ' Set protocol for sending
    Winsock1.RemoteHost = MailServerName ' Set the server address
    Winsock1.RemotePort = 25 ' Set the SMTP Port
    Winsock1.Connect ' Start connection
   
    If WaitFor("220") = False Then GoTo closeSock
   
    StatusTxt.Caption = "Connecting...."
    StatusTxt.Refresh
   
    Winsock1.SendData ("HELO worldcomputers.com" + vbCrLf)

    If WaitFor("250") = False Then GoTo closeSock

    StatusTxt.Caption = "Connected"
    StatusTxt.Refresh

    Winsock1.SendData (first)

    StatusTxt.Caption = "Sending Message"
    StatusTxt.Refresh

    If WaitFor("250") = False Then GoTo closeSock

    Winsock1.SendData (Second)

    If WaitFor("250") = False Then GoTo closeSock

    Winsock1.SendData ("data" + vbCrLf)
   
    If WaitFor("354") = False Then GoTo closeSock


    Winsock1.SendData (Eighth + vbCrLf)
    Winsock1.SendData (Seventh + vbCrLf)
    Winsock1.SendData ("." + vbCrLf)

    If WaitFor("250") = False Then GoTo closeSock

    Winsock1.SendData ("quit" + vbCrLf)
   
    StatusTxt.Caption = "Disconnecting"
    StatusTxt.Refresh

    If WaitFor("221") = False Then GoTo closeSock

closeSock: Winsock1.Close
Else
    MsgBox (Str(Winsock1.State))
End If
  
End Sub
Function WaitFor(ResponseCode As String) As Boolean
    Start = Timer ' Time event so won't get stuck in loop
    While Len(Response) = 0
        Tmr = Timer - Start
        DoEvents ' Let System keep checking for incoming response **IMPORTANT**
        If Tmr > 50 Then ' Time in seconds to wait
            MsgBox "SMTP service error, timed out while waiting for response", 64, MsgTitle
            WaitFor = False
            Exit Function
        End If
    Wend
    While Left(Response, 3) <> ResponseCode
        DoEvents
        If Tmr > 50 Then
            MsgBox "SMTP service error, impromper response code. Code should have been: " + ResponseCode + " Code recieved: " + Response, 64, MsgTitle
            WaitFor = False
            Exit Function
        End If
    Wend
Response = "" ' Sent response code to blank **IMPORTANT**
WaitFor = True
End Function

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JPA 中,可以使用 Query 对象执行查询操作。Query 接口通常由 EntityManager 创建,可以使用以下方法之一获取 Query 对象: - EntityManager.createQuery(String jpql):使用 JPQL 创建 Query 对象。 - EntityManager.createNativeQuery(String sql):使用 SQL 创建 Query 对象。 - EntityManager.createNamedQuery(String name):使用命名查询创建 Query 对象。 使用 Query 对象可以执行以下操作: - 设置查询参数:可以使用 Query 对象的 setParameter 方法设置查询参数。例如,可以使用 setParameter 方法设置查询参数的值,如下所示: ``` Query query = entityManager.createQuery("SELECT e FROM Employee e WHERE e.name = :name"); query.setParameter("name", "John Doe"); ``` - 执行查询:可以使用 Query 对象的 getResultList 方法获取查询结果列表,或者使用 getSingleResult 方法获取单个查询结果。例如,以下代码查询 Employee 实体中所有的记录: ``` Query query = entityManager.createQuery("SELECT e FROM Employee e"); List<Employee> employees = query.getResultList(); ``` - 分页查询:可以使用 Query 对象的 setFirstResult 和 setMaxResults 方法进行分页查询。例如,以下代码查询 Employee 实体中前 10 条记录: ``` Query query = entityManager.createQuery("SELECT e FROM Employee e"); query.setFirstResult(0); query.setMaxResults(10); List<Employee> employees = query.getResultList(); ``` - 使用动态查询:可以使用 Criteria API 构建动态查询。例如,以下代码使用 Criteria API 构建查询: ``` CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<Employee> cq = cb.createQuery(Employee.class); Root<Employee> root = cq.from(Employee.class); cq.select(root); cq.where(cb.equal(root.get("name"), "John Doe")); Query query = entityManager.createQuery(cq); List<Employee> employees = query.getResultList(); ``` 以上是 JPA 中 Query 的基本使用方法,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值