我们希望让用户从内部SharePoint网站向其他人发送一段内容(例如Word文档)变得很容易,类似于随处可见的“发送给朋友”功能,但实际上发送内容,不只是链接。我可以轻松添加“发送给朋友”或“通过电子邮件发送”功能到SharePoint列表吗?
使用SharePoint可以轻松实现吗?
有信誉的人回答“不”是可以接受的答案。
我们希望让用户从内部SharePoint网站向其他人发送一段内容(例如Word文档)变得很容易,类似于随处可见的“发送给朋友”功能,但实际上发送内容,不只是链接。我可以轻松添加“发送给朋友”或“通过电子邮件发送”功能到SharePoint列表吗?
使用SharePoint可以轻松实现吗?
有信誉的人回答“不”是可以接受的答案。
我的防火墙阻止了kusek的链接,但我相信这是一个好去处。巧合的是我昨天刚刚开发这个,所以可以分享亮点。
特性文件
这custom action feature增加了一个菜单选项,所有文档库。如果您需要将其限制为仅限某些文档,请调整内容类型。
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="OpenInMailClient"
RegistrationType="ContentType"
RegistrationId="0x0101"
Location="EditControlBlock"
Sequence="500"
ImageUrl="/_layouts/images/iceml.gif"
Title="Send As Attachment">
<UrlAction Url="~site/_layouts/Custom/SendMail.aspx?ItemId={ItemId}&ListId={ListId}" />
</CustomAction>
</Elements>
应用页面
我开发使用的应用程序页面卡林纳博世的优秀reference of SharePoint controls设计和创建应用程序页面,以便它看起来不错,“SharePointy”。我还使用了一个丰富的HTML框,以便用户可以将丰富的文本输入到似乎正在工作的正文中。
发送消息
这是相当标准的.NET。唯一的半酷部分是使用SharePoint中设置的发送邮件服务器来发送邮件。请注意,有一种方法可以在SharePoint API中发送邮件,但它似乎不支持附件,我无法看到使用它的好处。
// Prepare message
MailMessage message = new MailMessage
{
Subject = txtSubject.Text,
Body = txtBody.Text,
IsBodyHtml = true,
From = new MailAddress(txtFromAddress.Text)
};
message.To.Add(txtToAddress.Text);
if (!String.IsNullOrEmpty(txtCCAddress.Text))
message.CC.Add(txtCCAddress.Text);
message.Bcc.Add(txtBCCAddress.Text);
// Prepare attachment
Stream stream = chosenItem.File.OpenBinaryStream();
Attachment attachment = new Attachment(stream, chosenItem.Name, "application/octet-stream");
message.Attachments.Add(attachment);
// Send message
string server = SPContext.Current.Site.WebApplication.OutboundMailServiceInstance.Server.Address;
SmtpClient client = new SmtpClient(server);
client.Send(message);
// Clean up
stream.Dispose();
attachment.Dispose();
message.Dispose();
您可以使用自定义操作和布局页面来完成此操作。有关更多详情,请参阅this链接。格式化链接是不整洁的,但这是你需要遵循的方法。您可能需要做的另一件事是以某种方式将电子邮件ID设置为在上述文章中发送的电子邮件ID,以便他们从用户那里获取电子邮件。你可能需要发送一个以及querystring参数。