[英]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.