示例#1
0
            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);
            }
示例#2
0
            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);
            }