27.01.2011, 10:18 | #1 |
newborn in DAX
|
Посылка письма с прикреплённым файлом через batch на серверe
У меня тут проблема. Надо посылать почту с прикреплённым файлом. Нашла дот.нет код. с клиентской машины посылает как часы. Теперь задачка усложнилась. Не все пользуются клиентом, по большей части народ пользуется ТС. Там нет никакого почтового агента, соответственно письмо не посылается. Написан класс, который будет запускаться из batch на сервере и посылать письмо каждые 5-10 минут. Всё путём но почему-то на первой строчке выдаёт ошибку
Request for the permission of type 'InteropPermission' failed. Object 'CLRObject' could not be created Отчего такая непонятная ошибка. Можно как-то как делать отладку в батч? Любые идеи please, я уже несколько дней мучаюсь. причём перестал реагировать на try catch Спасибо вот код X++: public int 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; FileIOPermission perm; System.Exception e; ; 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(); perm = new FileIOPermission(FileName,'rw'); perm.assert(); attachment = new System.Net.Mail.Attachment(FileName); attachementCollection.Add(attachment); smtpClient = new System.Net.Mail.SmtpClient(SMTPServer); smtpClient.Send(mailmessage); CodeAccessPermission::revertAssert(); mailmessage.Dispose(); attachment.Dispose(); return 1; } catch(Exception::CLRError) { info (strfmt("error sent email to ל %1" , to)); info(CLRInterop::getLastException().ToString()); return 0; } } |
|