我正在使用SharePoint 2013来实现自定义工作流应用程序。

在其中一个国家过渡期间,我想向作为某个组的人发送电子邮件,其中包含在过去5天内上传的文件的zip文件。 但是,我不确定在SharePoint中发送附件的最佳方法是什么。如果API本身支持它,我找不到:

http://msdn.microsoft。com / en-us / library / microsoft.sharepoint.utities.sputility.sendemail.aspx

请建议推荐的方式。

有帮助吗?

解决方案

SPUtility.SendEmail doesn't support sending attachments you will need to use the classes in the System.Net.Mail namespace.

Below is an example of how to do this, it is not functional as you will need to provide additional code to load your zip file as an SPFile object in order to call the OpenBinaryStream() method (or provide some other way of opening the zip file as a Stream). Also it will need additional error checking and such.

using(SPSite site = new SPSite("http://siteurl"))
{
  using(SPWeb web = site.OpenWeb())
   {
       // Check there is an email server configured
        if (SPUtility.IsEmailServerSet(web)) 
        {
            // Get the web app so we can get the email server SP is configured to use
            SPWebApplication webApp = web.Site.WebApplication; 

            // Get the mail server details
            string smtpServerAddress = webApp.OutboundMailServiceInstance.Server.Address;
            string fromAddress = webApp.OutboundMailSenderAddress;

            var email = new MailMessage();
            email.From = new MailAddress(fromAddress);

            // Your code to load the zip file as an SPFile              

            Stream contentStream = spFile.OpenBinaryStream();
            var attachment = new Attachment(contentStream, spFile.Name);
            email.Attachments.Add(attachment);

            email.Subject = "Your email subject";
            email.Body = "Your email body text";

            // Set up the mail server and sent the email
            SmtpClient mailServer = new SmtpClient(smtpServerAddress);
            mailServer.Credentials = CredentialCache.DefaultNetworkCredentials;
            mailServer.Send(email);
        }
   }
}

其他提示

This should work:

using (SPSite site = new SPSite("http://website.com/sites/site"))
{
    using (SPWeb web = site.OpenWeb())
    {
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        System.IO.StreamWriter writer = new System.IO.StreamWriter(ms);
        writer.Write("Hello its my sample file");
        writer.Write(Environment.NewLine);
        writer.Write(Environment.NewLine);
        writer.Write("Hello its my sample file");
        writer.Flush();

        SPWebApplication webApp = web.Site.WebApplication;
        string smtpServerAddress = webApp.OutboundMailServiceInstance.Server.Address;
        string fromAddress = webApp.OutboundMailSenderAddress;

        ms.Position = 0;     // read from the start of what was written             

        System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Text.Plain);

        MailMessage email = new MailMessage();
        email.From = new MailAddress(fromAddress);
        email.To.Add("myemail@gmail.com");           

        email.Attachments.Add(new Attachment(ms, "myfile.txt", "text/txt"));
        email.Subject = "Your email subject";
        email.Body = "Your email body text";

        // Set up the mail server and sent the email
        SmtpClient mailServer = new SmtpClient(smtpServerAddress);
        mailServer.Credentials = CredentialCache.DefaultNetworkCredentials;
        mailServer.Send(email);

        writer.Dispose();
        ms.Close();
    }
}
许可以下: CC-BY-SA归因
scroll top