public override void EmailReceived(
SPList list,
SPEmailMessage emailMessage,
string receiverData)
{
// Vérification que la liste est de type liste de liens
if (list.BaseTemplate == SPListTemplateType.Links)
// Récupération du sujet du mail pour en extraire le titre et l'url
string subject = emailMessage.Headers["Subject"];
if (!string.IsNullOrEmpty(subject) && subject.StartsWith("http"))
string title = null;
string url = null;
int indexSpace = subject.IndexOf(" ");
// Découpage du sujet
// - soit 1 seul "mot" => URL
// - sinon URL suivi du titre du lien
if (indexSpace >= 0)
title = subject.Substring(indexSpace + 1).Trim();
url = subject.Substring(0, indexSpace);
}
else
title = subject;
url = subject;
// Récupération du corps du message en tant que commentaires
string body = emailMessage.PlainTextBody;
// Si nous avons l'url et le titre, nous ajoutons l'élément
if (title != null && url != null)
// Création de l'élément dans la liste
SPListItem link = list.Items.Add();
link["URL"] = string.Format("{0}, {1}", url, title);
link["Comments"] = body;
// Ajout des pièces attachées si la liste le gère
if (list.EnableAttachments)
foreach (SPEmailAttachment attachment in emailMessage.Attachments)
// Récupération du stream sous forme de tableau de byte
byte[] emailContent = new byte[attachment.ContentStream.Length];
int offset = 0;
int remaining = emailContent.Length;
while (remaining > 0)
int read = attachment.ContentStream.Read(emailContent, offset, remaining);
remaining -= read;
offset += read;
// Ajout de la pièce attaché à l'élément de liste
link.Attachments.Add(attachment.FileName, emailContent);
// Sauvegarde du nouvel élément
link.Update();