Steps to send mail with attachment in web form for marketer by custom action
1. Create a custom send mail item under “/sitecore/system/Modules/Web Forms for Marketers/Settings/Actions/Save Actions” in sitecore.
2. Create custom class for this action and inherited by ‘ISaveAction, ISubmit’.
3. Enter Assembly name in Assembly field and class name in Class field of custom send mail item.
4. Create a custom send mail function (please note that tricky part of below code is getting reading attachment from media library)
// send email with attachments public static bool SendEmailWithAttachments(string To, string From, string Subject, string Message, string atchmnt1, string atchmnt2, string atchmnt3) { bool result = true; try { MailMessage mailMsg = new MailMessage(); // mailaddress of sender MailAddress mailFrom = new MailAddress(From); mailMsg.From = mailFrom; // mail addresses for recipients string[] mailAddressList = To.Split(','); foreach (string str in mailAddressList) { try { MailAddress mailTo = new MailAddress(str.Trim()); mailMsg.To.Add(mailTo); } catch { } } mailMsg.Subject = Subject; mailMsg.Body = Message; mailMsg.IsBodyHtml = true; if (!string.IsNullOrEmpty(atchmnt1)) { mailMsg.Attachments.Add(ReadAttachment(atchmnt1)); } if (!string.IsNullOrEmpty(atchmnt2)) { mailMsg.Attachments.Add(ReadAttachment(atchmnt2)); } if (!string.IsNullOrEmpty(atchmnt3)) { mailMsg.Attachments.Add(ReadAttachment(atchmnt3)); } var smtp = new SmtpClient(Sitecore.Configuration.Settings.MailServer, Sitecore.Configuration.Settings.MailServerPort); smtp.Send(mailMsg); } catch { result = false; } return result; } // get attachement by media item id public static Attachment ReadAttachment(string value) { MediaItem mediaItem = null; ItemUri itemUri = ItemUri.Parse(value); if (itemUri != null) { Item item = Database.GetItem(itemUri); if (item != null) { mediaItem = new MediaItem(item); } } // create attachment using media item properties Attachment attachment = new Attachment(mediaItem.GetMediaStream(), string.Join(".", new string[] { mediaItem.Name, mediaItem.Extension}), mediaItem.MimeType); return attachment; }