Вышеупомянутый ответ не работает. Необходимо установить DeliveryMethod = SmtpDeliveryMethod.Network
, или это возвратится с" , клиент не аутентифицировался " ошибка. Также это всегда - хорошая идея поместить тайм-аут.
Пересмотренный код:
using System.Net.Mail;
using System.Net;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@yahoo.com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
Проблема в том, что запись VendTable
применяется в качестве аргумента к CustTable
, которая затем создает динамическую ссылку. Решение состоит в том, чтобы избежать аргумента.
Переопределите метод clicked
в пункте меню отображения CustTable
следующим образом:
void clicked()
{
this.menufunction().run(new Args(element));
}
Это вызывает форму CustTable
только с вызывающим объектом и без аргумента записи.
У вас есть 2 варианта: вы можете создать кнопку и переопределить ее метод clicked () или используйте MenuItemButton и назначьте ему Action MenuItem.
Использование MenuItems является наилучшей практикой, потому что это позволяет вам использовать структуру безопасности и конфигурации AX. Вы можете связать класс с MenuItem, а в методе main () класса вы можете запускать компонент FormRunOnClient () по мере необходимости.