Я пытаюсь отправить электронное письмо на основе некоторых событий, инициированных пользователями в их клиенте. Я не хочу, чтобы электронная почта отправлялась с клиента (поскольку это потребовало бы, чтобы мы разрешили практически каждой рабочей станции в домене использовать службу SMTP), а скорее с сервера AOS.
Я подумал о создании класса, который расширял бы RunBaseBatch
и использовал в нем SysMailer
.
Вот что у меня есть до сих пор.
class Batch_Mailer extends RunBaseBatch
{
str subject;
str body;
str fromName;
str fromAddress;
str toAddress;
str smtpServer;
void new(str _subject, str _body, str _fromName, str _fromAddress, str _toAddress)
{
subject = _subject;
body = _body;
fromName = _fromName;
fromAddress = _fromAddress;
toAddress = _toAddress;
smtpServer = 'mail.domain.ca';
super();
}
public boolean canGoBatchJournal()
{
return true;
}
public void run()
{
SysMailer mail;
;
super();
try
{
mail = new SysMailer();
mail.fromAddress(fromAddress, fromName);
mail.SMTPRelayServer(smtpServer);
mail.tos().appendAddress(toAddress);
mail.htmlBody(strfmt(body));
mail.subject(subject);
mail.sendMail();
}
catch
{
//Log something maybe, but nice if the infolog would not pop up...
}
}
}
Вот как я его использую:
Batch_Mailer mail;
mail = new Batch_Mailer("Subject.", strfmt("@VDX488", vendTable.AccountNum, curUserId()), "AX Alerts",
"[email protected]", "[email protected]"
К сожалению, похоже, это работает в клиенте. Если я запускаю код на виртуальной машине dev box, на которой есть сервер AOS (который может использовать службу SMTP), электронная почта срабатывает, но не в том случае, если я запускаю ее в клиенте на своем физическом компьютере (которому не разрешено использовать SMTP). услуга).
Я думал, что расширение RunBaseBatch
и переопределение run
сделают это, но, видимо, нет. Любые идеи ?
Мне также интересно, не сработает ли этот подход, поскольку я не думаю, что большинство пользователей могут запускать пакеты, используя свои учетные записи... Возможно, мне придется использовать олицетворение?
Спасибо!