繁体   English   中英

如何从Windows Mobile 6设备发送带有附件的电子邮件

[英]How to send an email with an attachment from a Windows Mobile 6 device

我了解到.NET CF不支持SmtpClient类。 它最好的是我不想使用的PocketOutlook类。

我发现OpenNETCF确实具有OpenNETCF.Net.Mail命名空间,该命名空间使SmtpClient类可用。 不幸的是,它仅部分实现,不直接支持附件: http : //community.opennetcf.com/forums/t/11325.aspx

该帖子表明,仍然可以使用多部分MIME消息添加附件。

更新

阅读ctacke的建议看w3.org文章后,我试图像这样更改我的方法:

using OpenNETCF.Net.Mail;

    public void EmailPicture(string picLoc)
    {
        var smtpClient = new SmtpClient
                             {
                                 Host = MailProperties.SmtpHost,
                                 Credentials = new SmtpCredential(MailProperties.UserName, MailProperties.Password, MailProperties.Domain),
                                 DeliveryMethod = SmtpDeliveryMethod.Network,
                                 Port = MailProperties.Port
                             };

        var message = new MailMessage();
        var fromAddress = new MailAddress(MailProperties.From);

        message.To.Add(MailProperties.To);
        message.From = fromAddress;
        message.Subject = "Requested Picture";
        message.IsBodyHtml = false;

        message.Headers.Add("MIME-Version", "1.0");
        message.Headers.Add("Content-Type", "multipart/mixed; boundary=\"simple boundary\"");

        var bodyBuilder = new StringBuilder();
        //add text
        bodyBuilder.Append("--simple boundary\r\n");
        bodyBuilder.Append("Content-type: text/plain; charset=us-ascii\r\n\r\n");
        bodyBuilder.Append("Requested Picture is attached.\r\n\r\n");
        //add attachment
        bodyBuilder.Append("--simple boundary\r\n");
        bodyBuilder.Append("Content-type: image/jpg;\r\n\r\n");
        var fs = new FileStream(picLoc, FileMode.Open, FileAccess.Read);
        var picData = new byte[fs.Length];
        fs.Read(picData, 0, picData.Length);
        bodyBuilder.Append(picData);
        bodyBuilder.Append("\r\n\r\n");
        bodyBuilder.Append("--simple boundry--\r\n");

        message.Body = bodyBuilder.ToString();

        smtpClient.Send(message);
    }

我收到的电子邮件看起来像这样:

-简单边界Content-type:文本/纯文本; 字符集= US-ASCII

请求的图片已附加。

--simple boundary内容类型:image / jpg;

System.Byte []

-简单边界-

我有格式问题吗? 或缺少标题?

正如您在论坛上指出的那样,OpenNETCF邮件代码中未实现附件。 我们只是从来没有绕过这样做。 带有附件的电子邮件只是简单的多部分MIME消息,它并不十分复杂,并在RFC 1341中进行了介绍 您将必须扩展代码以构建多部分的MIME消息,然后设置适当的内容类型。

我通过制作自己的电子邮件类进行了粗略的工作,该电子邮件类的方法和属性名称与.NET SMTP使用的名称完全相同。

在我的班级内部,如果有附件,则在调用我的电子邮件班级的Send时将其复制到我们的服务器。 我的电子邮件也仅发送到同一台服务器,并发送到一个最小的应用程序,该应用程序沿着TCP连接坐在并侦听消息。

服务器收到信息后,便可以构造SMTP电子邮件,使用复制过来的文件创建附件(如果附件路径为NULL,则没有附件),然后将电子邮件发送到我指定的地址中。电子邮件类别的“收件人”,“抄送”和/或“密件抄送”字段。

这是完成它的更长的方法,但它像冠军一样工作!

代码相当大,但这更多,因为我希望它可以与我编写的应用程序套件中的其他功能一起使用。 另外,显然有两个项目:一个用于移动,一个用于Windows或Web(服务器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM