Показать сообщение отдельно
Старый 19.09.2011, 16:24   #23  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от timaluhs Посмотреть сообщение
У меня тут проблема. Надо посылать почту с прикреплённым файлом. Нашла дот.нет код. с клиентской машины посылает как часы. Теперь задачка усложнилась. Не все пользуются клиентом, по большей части народ пользуется ТС. Там нет никакого почтового агента, соответственно письмо не посылается. Написан класс, который будет запускаться из batch на сервере и посылать письмо каждые 5-10 минут. Всё путём но почему-то на первой строчке выдаёт ошибку
Request for the permission of type 'InteropPermission' failed. Object 'CLRObject' could not be created...
Привожу пример рабочего кода, который может отправлять сообщения, в т.ч. на серверной стороне. Может кто то захочет "поиграть" с NET

(Хотя я все же рекомендую пользоваться "стандартным" для Ax способом - класс SysEmailBatch)

Проверен на ax 2009
X++:
static server boolean mlm_SendMailAttachment(str Body, str Subject, str FileName, str to, str sender)
{
    System.Net.Mail.MailAddress             mailAddressFrom;
    System.Net.Mail.MailAddress             mailAddressTo;
    System.Net.Mail.MailMessage             mailMessage;
    System.Net.Mail.Attachment              attachment;
    System.Net.Mail.AttachmentCollection    attachementCollection;
    System.Net.Mail.SmtpClient              smtpClient;
    str                                     SMTPServer;
    ;

    new InteropPermission(InteropKind::ClrInterop).assert();

    try
    {
        mailAddressFrom = new System.Net.Mail.MailAddress(sender);
        mailAddressTo =  new System.Net.Mail.MailAddress(to);

        SMTPServer = SysEmailParameters::find(false).SMTPRelayServerName;

        mailMessage = new System.Net.Mail.MailMessage(mailAddressFrom, mailAddressTo);

        mailmessage.set_Subject(Subject);
        mailmessage.set_Body(Body);
        mailmessage.set_IsBodyHtml(true);

        attachementCollection = mailMessage.get_Attachments();

        attachment = new System.Net.Mail.Attachment(FileName);
        attachementCollection.Add(attachment);

        smtpClient = new System.Net.Mail.SmtpClient(SMTPServer);
        smtpClient.Send(mailmessage);

        mailmessage.Dispose();
        attachment.Dispose();

        return true;
    }
    catch(Exception::CLRError)
    {
       error(AifUtil::getClrErrorMessage());

       return false;
    }
}