我曾经在这个地方发过一个帖子,求解决方案,原帖地址如下:
http://topic.csdn.net/u/20100627/20/c389a51f-b334-4e39-a8e1-62d9488331e2.html
我原来使用System.Net.Mail来发送邮件,代码没有任何问题,就是有时能发成功,有时发送成功了,但对方收不到,后来各位高手指点了一下,也没有好的解决办法,最后我不得已只有放弃了,找了好多地方,终于找到了一个解决方案,测试了快半个月了,基本成功率100%了。
我使用的是国外的一个开源代码:
using LumiSoft.Net.SMTP.Client;
Mime m = new Mime();
MimeEntity mainEntity = m.MainEntity;
// Force to create From: header field
mainEntity.From = new AddressList();
mainEntity.From.Add(new MailboxAddress(txtFrom.Text, txtFrom.Text));
 // Force to create To: header field
 mainEntity.To = new AddressList();
 mainEntity.To.Add(new MailboxAddress(txtTo.Text, txtTo.Text));
mainEntity.Subject = txtSubject.Text;
//添加正文
mainEntity.ContentType = MediaType_enum.Multipart_mixed;
MimeEntity textEntity = mainEntity.ChildEntities.Add();
textEntity.ContentType = MediaType_enum.Text_html;
textEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64;
textEntity.DataText = txtBody.Text;
//发送附件
                MimeEntity attachmentEntity = new MimeEntity();
                attachmentEntity.ContentType = MediaType_enum.Application_octet_stream;
                attachmentEntity.ContentDisposition = ContentDisposition_enum.Attachment;
                attachmentEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64;
                attachmentEntity.ContentDisposition_FileName = "c:/test.jpg";
                attachmentEntity.DataFromFile("c:/test.jpg");
                
                mainEntity.ChildEntities.Add(attachmentEntity);
               
                SMTP_Client.QuickSend(m);这段诡异的代码,有些邮箱都不需要提供用户名和密码就可以发送,如果需要提供用户名和密码的就需要使用另外一个方法。
但这个还是存在一个致命的缺陷,就是发送大附件的时候速度太慢了。
我测试过发送一个3M的附件,差不多花了2分钟,15M的附件,差不多12分钟,奇怪的是都发送成功了