簡體   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