none
SharePoint EventReceiver: Отправить вложение элемента списка почтой? RRS feed

  • Вопрос

  • Здравствуйте.
    Есть настраиваемый список, в элементах которого могут быть вложения (.docx)

    Мне нужно из кода eventReceiver(а), который срабатывает на обновление элемента, получить вложение из элемента списка и отправить его почтой.

    Как отправить просто файл вложением в письмо, сказано тут: https://metanit.com/sharp/net/8.1.php
    но мне нужно отправить его из элемента списка.

    Подскажите, как это можно сделать?



    13 октября 2020 г. 7:44

Все ответы

  •  public void SendEmail(string subject, string body, string sender, string attachmenturl)
            {
                var fromAddress = new MailAddress("Sharepoint@yourmail.ru", "SharePoint server response");
                var toAddress = new MailAddress(sender, "To Name");
                var smtp = new SmtpClient
                {
                    Host = "yourmail.ru",
                    Port = 25,
                    EnableSsl = false
                };
    
                using (var message = new MailMessage(fromAddress, toAddress)
                {
                    Subject = subject,
                    Body = body
                 })
                {
                    Attachment data = new Attachment(attachmenturl, MediaTypeNames.Application.Octet);
                    ContentDisposition disposition = data.ContentDisposition;
                    disposition.CreationDate = System.IO.File.GetCreationTime(attachmenturl);
                    disposition.ModificationDate = System.IO.File.GetLastWriteTime(attachmenturl);
                    disposition.ReadDate = System.IO.File.GetLastAccessTime(attachmenturl);
                    message.Attachments.Add(data);
                    smtp.Send(message);
                }
            }
            public override void ItemAdded(SPItemEventProperties properties)
            {
               try
               {
                  using (SPWeb web = properties.OpenWeb()) {
                    string subject;
                    string body;
                    string sender = "postmaster@yourmail.ru";
                    
                    SPListItem currentItem = properties.ListItem;
                    string attachment = Uri.EscapeUriString(currentItem.Attachments.UrlPrefix + currentItem.Attachments[0]);
    
                    var client = new WebClient();
                    client.UseDefaultCredentials = true;
                    client.Credentials = CredentialCache.DefaultCredentials;
                    string attachmenturl = @"C:\Temp\" + currentItem.Attachments[0];
                    client.DownloadFile(attachment, attachmenturl);
    
                    subject = "Name: " + currentItem.Name.ToString();
                    body = "Body";
                    SendEmail(subject, body, sender, attachmenturl);
                  }
               }
                catch (Exception ex)
               {
                    throw ex;
               }
            }
    • Предложено в качестве ответа bydebtrelief 18 октября 2020 г. 15:47
    • Отменено предложение в качестве ответа bydebtrelief 18 октября 2020 г. 15:47
    • Предложено в качестве ответа Lion SP 20 октября 2020 г. 6:59
    16 октября 2020 г. 14:57
  • Спасибо VARD32!

    У меня был такой же вопрос.

    Сейчас я разобрался с этим,

    18 октября 2020 г. 15:51
  • Спасибо, пример рабочий, класс 👍
    20 октября 2020 г. 6:59