Create the static method in the class, running on server
server static void insertMailToQueue(
SysEmailId _emailId,
str _emailAddr,
str _custName,
str _quotationId,
container attachments = conNull(),
Map _mappings = null,
LanguageId _language = 'pt-br'
)
{
// Adapted from SysEmailTable::sendMail
#SysMailer
LanguageId languageId;
SysEmailTable table = SysEmailTable::find(_emailId);
SysEmailMessageTable message;
str messageBody;
container data;
container embeddedBinaryData;
Filename filePath;
Filename filename;
Filename fileExtension;
List list;
ListEnumerator enumerator;
Filename htmlDecodedFileName;
int i = 1;
int maxAttachmentSize;
BinData binData;
SysOutgoingEmailTable outgoingEmailTable;
SysOutgoingEmailData outgoingEmailData;
SysEmailBatch batch = SysEmailBatch::construct();
FileIOPermission fileIOPermission;
SysEmailParameters emailParams = SysEmailParameters::find();
str attachFilename;
str attachAttachmentName;
int attachmentIDx;
;
maxAttachmentSize = emailParams.MaxEmailAttachmentSize;
//maxAttachmentSize in megabytes
if (maxAttachmentSize < 1)
maxAttachmentSize = #maxAttachmentSizeDefault;
if (_language)
languageId = _language;
else
languageId = table.DefaultLanguage;
message = SysEmailMessageTable::find(_emailId, languageId);
if (!message)
message = SysEmailMessageTable::find(_emailId, table.DefaultLanguage);
if (!message)
throw error(strFmt("@SYS74260", _language));
if (message.LayoutType == SysEmailLayoutType::StaticLayout)
messageBody = message.Mail;
else
throw error(strFmt("Layout type '%1' in email %2 is not supported by this function",
message.LayoutType,
message.EmailId));
messageBody = SysLabel::resolveLabels(messageBody, languageId);
ttsbegin;
outgoingEmailTable.EmailItemId = EventInbox::nextEventId();
outgoingEmailTable.TemplateId = table.EmailId;
outgoingEmailTable.IsSystemEmail = NoYes::No;
outgoingEmailTable.Sender = table.SenderAddr;
outgoingEmailTable.SenderName = table.SenderName;
outgoingEmailTable.Recipient = _emailAddr;
//note: first do the xml transform if needed, params are substitued after that
messageBody = SysEmailMessage::stringExpand(messageBody, SysEmailTable::htmlEncodeParameters(_mappings));
messageBody = strReplace(messageBody, '\n', '<br>');
messageBody = strFmt(messageBody, _custName, _quotationId, "Company Name");
[outgoingEmailTable.Message, data] = SysEmailTable::embedImages(messageBody);
list = List::create(data);
enumerator = list.getEnumerator();
while (enumerator.moveNext())
{
htmlDecodedFileName = SysEmailTable::htmlDecode(enumerator.current());
fileIOPermission = new FileIOPermission(htmlDecodedFileName,'r');
fileIOPermission.assert();
//BP Deviation Documented
if (WinAPIServer::fileExists(htmlDecodedFileName) &&
//BP Deviation Documented
(WinAPIServer::fileSize( htmlDecodedFileName) < (maxAttachmentSize * 1000000)) &&
SysEmailTable::isFromAttachmentsFolder(htmlDecodedFileName))
{
binData = new BinData();
//BP Deviation Documented
binData.loadFile(htmlDecodedFileName);
embeddedBinaryData = binData.getData();
outgoingEmailData.EmailItemId = outgoingEmailTable.EmailItemId;
outgoingEmailData.DataId = i;
outgoingEmailData.EmailDataType = SysEmailDataType::Embedded;
outgoingEmailData.Data = embeddedBinaryData;
[filePath, filename, fileExtension] = Global::fileNameSplit(htmlDecodedFileName);
outgoingEmailData.FileName = int642str(outgoingEmailTable.EmailItemId) + '_' + int2str(i);
outgoingEmailData.FileExtension = fileExtension;
outgoingEmailData.insert();
i++;
}
CodeAccessPermission::revertAssert();
}
outgoingEmailTable.Subject = SysEmailMessage::stringExpand(message.Subject, _mappings);
outgoingEmailTable.Priority = table.Priority;
outgoingEmailTable.WithRetries = false;
outgoingEmailTable.RetryNum = 0;
outgoingEmailTable.UserId = curUserId();
outgoingEmailTable.Status = SysEmailStatus::Executing;
for(attachmentIDx = 1;attachmentIDx <= conLen(attachments);attachmentIDx += 2)
{
attachFilename = conPeek(attachments,attachmentIDx);
attachAttachmentName = conPeek(attachments,attachmentIDx + 1);
fileIOPermission = new FileIOPermission(attachFilename,'r');
fileIOPermission.assert();
if (attachFilename && WinAPIServer::fileExists(attachFilename))
{
if (WinAPIServer::fileSize(attachFilename) < (maxAttachmentSize * 1000000))
{
binData = new BinData();
binData.loadFile(attachFilename);
embeddedBinaryData = binData.getData();
outgoingEmailData.EmailItemId = outgoingEmailTable.EmailItemId;
outgoingEmailData.DataId = i;
outgoingEmailData.EmailDataType = SysEmailDataType::Attachment;
outgoingEmailData.Data = embeddedBinaryData;
[filePath, filename, fileExtension] = Global::fileNameSplit(attachFilename);
outgoingEmailData.FileName = filename;
outgoingEmailData.FileExtension = fileExtension;
outgoingEmailData.insert();
}
}
}
CodeAccessPermission::revertAssert();
outgoingEmailTable.LatestStatusChangeDateTime = DateTimeUtil::getSystemDateTime();
outgoingEmailTable.insert();
ttscommit;
}Job with the call
static void sendMailTest2(Args _args)
{
str To;
str attach = @"\\192.168.1.11\publico\TI\AX\Quotation\1.xlsx";
CLRObject ex;
;
To = "diegoaraujodv@gmail.com";
try
{
SalesQuotationSendEmail::insertMailToQueue('Comercial', //email ID from sysEmailTable
To, //email from Receiver
'', //CustName
'', //QuotationId
[attach]); //Attach path
}
catch
{
//Code never executes past this point
ex = CLRInterop::getLastException();
while(ex != null) {
error(ex.ToString());
ex = ex.get_InnerException();
}
}
}


留言评论
暂无留言