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