为Dynamics AX发送电子邮件客户

时间:2013-07-18 13:09:57

标签: smtpclient axapta

我想知道发送电子邮件的过程如何在Dynamics Ax客户端和为服务器设置为默认电子邮件客户端的电子邮件客户端之间起作用。

首先,Dynamics Ax可以使用备用电子邮件客户端(不是outlook)来发送电子邮件,其次是Dynamics Ax将整个配置发送到客户端,或者客户端必须自己配置。

现在,我在尝试使用Windows Live Mail发送电子邮件时遇到未知错误。

3 个答案:

答案 0 :(得分:1)

Dynamics AX将MAPI用于客户端邮件。

您可以使用SysINetMail::sendEMail方法使用此方法发送简单邮件。

如果您批量发送邮件,则另一个选项是使用SysEmailTable::sendMail使用SMTP邮件 这需要使用邮件模板。

答案 1 :(得分:0)

使用SysOutgoingEmailTable和SysOutgoingEmailData,您可以向任何域的收件人发送电子邮件并附加文件。

您有以下字段:

outgoingEmailTable.EmailItemId
outgoingEmailTable.IsSystemEmail
outgoingEmailTable.Sender 
outgoingEmailTable.SenderName 
outgoingEmailTable.Recipient
outgoingEmailTable.Subject 
outgoingEmailTable.Priority 
outgoingEmailTable.WithRetries 
outgoingEmailTable.RetryNum
outgoingEmailTable.UserId
outgoingEmailTable.Status 
outgoingEmailTable.Message
outgoingEmailTable.TemplateId
outgoingEmailTable.LatestStatusChangeDateTime 

outgoingEmailData.EmailItemId
outgoingEmailData.FileName
outgoingEmailData.EmailDataType
outgoingEmailData.FileExtension

在这些表格中插入相应的电子邮件详细信息,您就可以了。如果它给出权限错误,请添加权限设置    CodeAccessPermission :: assertMultiple。

答案 2 :(得分:0)

我知道这是一个老问题,但如果其他人需要它... 我在 Dynamics AX 2009 上使用它,它就像一个魅力:)

server static boolean sendEmail(EmplId _fromEmplId, EmplId _toEmplId, str _subject, str message, EmailPriority _priority = EmailPriority::Normal)
{
boolean         ok = true;
SysEmailBatch   emailBatch;
EmplTable       fromEmplTable;
EmplTable       toEmplTable;
Email           fromEmail;
Email           toEmail;
;

changecompany( -- TO YOUR MASTER COMPANY --)
{
    fromEmplTable   = EmplTable::find(_fromEmplId);
    toEmplTable     = EmplTable::find(_toEmplId);
    fromEmail       = fromEmplTable.email();
    toEmail         = toEmplTable.email();

    if (! fromEmail)
    {
        ok = checkFailed(strfmt("no email set up for %1", _fromEmplId));
    }

    if (! toEmail)
    {
        ok = checkFailed(strfmt("no email set up for %1", _toEmplId));
    }

    if (ok)
    {
        emailBatch = SysEmailBatch::construct();

        emailBatch.parmSendername(fromEmplTable.name());
        emailBatch.parmSenderAddr(fromEmplTable.email());
        emailBatch.parmEmailAddr(toEmplTable.email());

        emailBatch.parmPriority(_priority);
        emailBatch.parmSubject(_subject);
        emailBatch.parmMessageBody(_message);

        emailBatch.run();
    }
}

return ok;
}