0

我们有一个构建和发送邮件消息的类。我想进行一些更改,但在此之前我想测试一些东西(例如 URL 的显示方式)。我正在尝试从控制台手动发送消息,但出现了一些错误。这是SendMessage该类的方法:

Method SendMessage(pSubject As %String, pMessage As %String, pEmailAddresses) As %Status
{
    set tSC=$$$OK
    set tMailMessage=##class(%Net.MailMessage).%New()
    do tMailMessage.To.Insert($PIECE(pEmailAddresses,",",1))
    for tI=2:1:$LENGTH(pEmailAddresses,",") {
        do tMailMessage.Cc.Insert($PIECE(pEmailAddresses,",",tI))
    }

    set tMailMessage.Subject=pSubject
    set tMailMessage.Charset="iso-8859-1"
    set tSC=tMailMessage.TextData.Write(pMessage)
    quit:'tSC
    Set tSC1=..Adapter.SendMail(tMailMessage)
    if 'tSC1 {
        //Log warning about being unable to send mail.
        do $SYSTEM.Status.DecomposeStatus(tSC1,.err)
        $$$LOGWARNING("Could not send email: "_err(err))
        kill err
    }

    quit tSC
}

从终端,我可以实例化 MailMessage 类并设置正文数据,但是当我尝试发送时出现错误:

USER>set tMailMessage=##class(%Net.MailMessage).%New()

USER>do tMailMessage.To.Insert("me@email.com")

USER>set tSC=tMailMessage.TextData.Write("This is a URL test http://www.google.com, thank you")

USER>set tMailMessage.Subject="This is a test"

USER>set tMailMessage.Charset="iso-8859-1"

USER>set tSC1=..Adapter.SendMail(tMailMessage)

SET tSC1=..Adapter.SendMail(tMailMessage)
^
<NO CURRENT OBJECT>

正如你所看到的,当我尝试SendMail它告诉我NO CURRENT OBJECT

更新 我注意到班级顶部的这些行:

Parameter ADAPTER = "EnsLib.EMail.OutboundAdapter";

Property Adapter As EnsLib.EMail.OutboundAdapter;

所以我尝试USER>set tSC1=EnsLib.EMail.OutboundAdapter.SendMail(tMailMessage)了,但结果是<UNDEFINED> *EnsLib

4

1 回答 1

2

正如我认为您在 Ensemble Service 上工作的那样。但是为了测试,你不应该使用那些类。对于发送电子邮件,您可以直接使用%Net.SMTP。所以,而不是 ..Adapter.SendMail 使用这个代码

set s=##class(%Net.SMTP).%New()
set s.smtpserver="SMTP server name"

#; if SMTP server needs auth
set auth=##class(%Net.Authenticator).%New() ; use default authentication list
set auth.UserName="myUser"
set auth.Password="myPassword"
set s.authenticator=auth

set status=s.Send(tMailMessage)
if $$$ISERR(status) do $system.OBJ.DisplayError(status)
于 2016-01-11T16:49:49.567 回答