private static void SetField(Object m, String name, String value) { _helper.SetProp(m, "Fields", "urn:schemas:mailheader:" + name, value); Object fields = _helper.GetProp(m, "Fields"); LateBoundAccessHelper.CallMethodStatic(fields, "Update", new Object[0]); Marshal.ReleaseComObject(fields); }
internal static void Send(MailMessage message) { // create mail object Object newMail = _helper.CreateInstance(); // set properties if (message.From != null) { _helper.SetProp(newMail, "From", message.From); } if (message.To != null) { _helper.SetProp(newMail, "To", message.To); } if (message.Cc != null) { _helper.SetProp(newMail, "Cc", message.Cc); } if (message.Bcc != null) { _helper.SetProp(newMail, "Bcc", message.Bcc); } if (message.Subject != null) { _helper.SetProp(newMail, "Subject", message.Subject); } if (message.Priority != MailPriority.Normal) { int p = 0; switch (message.Priority) { case MailPriority.Low: p = 0; break; case MailPriority.Normal: p = 1; break; case MailPriority.High: p = 2; break; } _helper.SetProp(newMail, "Importance", p); } if (message.BodyEncoding != null) { _helper.CallMethod(newMail, "SetLocaleIDs", new Object[1] { message.BodyEncoding.CodePage }); } if (message.UrlContentBase != null) { _helper.SetProp(newMail, "ContentBase", message.UrlContentBase); } if (message.UrlContentLocation != null) { _helper.SetProp(newMail, "ContentLocation", message.UrlContentLocation); } int numHeaders = message.Headers.Count; if (numHeaders > 0) { IDictionaryEnumerator e = message.Headers.GetEnumerator(); while (e.MoveNext()) { String k = (String)e.Key; String v = (String)e.Value; _helper.SetProp(newMail, "Value", k, v); } } if (message.BodyFormat == MailFormat.Html) { _helper.SetProp(newMail, "BodyFormat", 0); _helper.SetProp(newMail, "MailFormat", 0); } if (message.Body != null) { _helper.SetProp(newMail, "Body", message.Body); } for (IEnumerator e = message.Attachments.GetEnumerator(); e.MoveNext();) { MailAttachment a = (MailAttachment)e.Current; int c = 0; switch (a.Encoding) { case MailEncoding.UUEncode: c = 0; break; case MailEncoding.Base64: c = 1; break; } _helper.CallMethod(newMail, "AttachFile", new Object[3] { a.Filename, null, (Object)c }); } // send mail _helper.CallMethod(newMail, "Send", new Object[5] { null, null, null, null, null }); // close unmanaged COM classic component Marshal.ReleaseComObject(newMail); }