昨天使用了.Net通过smtp发送邮件的方式发送了一封邮件到自己的QQ邮箱,但是发送成功后并没有提示邮箱收到新的邮件,而且去收件箱里面也没有新增的邮件。

这让本人觉得奇怪,所以就觉得是否被当作垃圾邮件过滤了,所以就点击垃圾箱看看,果真如此,QQ邮箱过滤了,当作垃圾邮件处理。

所以马上在网上找了一下,终于找到了方法了。

问题所在:

对方邮箱服务器判断:对于来历不明的软件发的邮件,邮箱服务器都可能认为是垃圾邮件,直接把它过滤掉,这是邮件接收方的过滤条件,我们无法改变的事实。

解决方法:

1.要使用自定义验证机制的system.net.mail类发送。不要用system.web.mail类发送,通常后者发送的邮件都会被当垃圾邮件,这是跟验证机制和有关。

2.要声明邮件地址和头信息(msg.Headers.Add("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869"); 披上outlook的马甲)

3.特殊情况,就是可能有些服务器在你已经披上合法的马甲后还是会当作垃圾邮箱处理,如网易,那是因为你的邮件内容可能存在一些,敏感的字眼,或者违法的信息导致的。

发送邮件的代码:

/// <summary>

 /// 发送邮件    

/// </summary>    

/// <param name="Subject">主题</param>    

/// <param name="Body">邮件内容</param>    

/// <param name="To">对方邮箱</param>    

/// <param name="MailFrom">发件人</param>    

/// <param name="MailFromName">邮件显示发送人的名称</param>    

/// <param name="MailDomain">服务器地址</param>    

/// <param name="MailServerUserName">用户名和密码</param>    

/// <param name="MailServerPassWord">密码</param>    

/// <returns></returns>    

public bool Send(string Subject, string Body, string To, string MailFrom, string MailFromName, string MailDomain, string MailServerUserName, string MailServerPassWord)    

{         try        

{            

MailMessage msg = new MailMessage();            

msg.From = new MailAddress(MailFrom, MailFromName);            

msg.To.Add(new MailAddress(To, To));

 msg.Subject = Subject;            

msg.Body = Body;            

msg.IsBodyHtml = true;            

msg.Priority = MailPriority.Normal;            

msg.SubjectEncoding = System.Text.Encoding.UTF8;            

msg.BodyEncoding = System.Text.Encoding.UTF8;                        

//不被当作垃圾邮件的关键代码--Begin            

msg.Headers.Add("X-Priority", "3");            

msg.Headers.Add("X-MSMail-Priority", "Normal");            

msg.Headers.Add("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869");   //本文以outlook名义发送邮件,不会被当作垃圾邮件            

msg.Headers.Add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2900.2869");            

msg.Headers.Add("ReturnReceipt", "1");            

//不被当作垃圾邮件的关键代码--End            

SmtpClient client = new SmtpClient(MailDomain);            

client.UseDefaultCredentials = false;            

client.Credentials = new NetworkCredential(MailServerUserName, MailServerPassWord); //帐号密码            

client.DeliveryMethod = SmtpDeliveryMethod.Network;

client.Send(msg);            

return true;        

}        

catch { return false; }    

}

然后再试着发一封邮件到QQ邮箱,到126邮箱都可以接收。

STMP发送邮件被当垃圾邮件处理的解决方法的更多相关文章

  1. C# 自动发送邮件被系统当做垃圾邮件退回的处理方法

    前两天做了一个发送邮件的定时任务.其功能为在每天的某一时刻,系统自动从银行查询前一天的交易明细到本地服务器,解析后生成为各自不同Excel文件,并打包成zip压缩文件,然后抄送附件给财务对账.其中,邮 ...

  2. Postfix上的反垃圾邮件的四个方法

    在介绍如何配置Postfix的smtp配置之前有必要首先介绍一下它的背景和特点.Postfix是一个由IBM资助下由WietseVenema 负责开发的自由软件工程的一个产物,其目的是为用户提供除se ...

  3. 发送邮件时Unable to relay错误的解决方法 转

    使用python的smtplib发送邮件,使用新浪的smtp服务,在本地测试正常.但把程序部署到服务器后,却连不上新浪的smtp服务器,可以ping通,但telnet 25端口失败,导致程序无法正常运 ...

  4. wordpress防止垃圾邮件的另一种方法

    我们知道wordpress可以用Akismet插件防止垃圾邮件,前面ytkah还讲过contact form 7如何搭配Akismet过滤垃圾邮件,还有什么方法呢?我们留在网站上的邮箱有可能被爬虫批量 ...

  5. 基于C#的机器学习--垃圾邮件过滤

    在这一章,我们将建立一个垃圾邮件过滤分类模型.我们将使用一个包含垃圾邮件和非垃圾邮件的原始电子邮件数据集,并使用它来训练我们的ML模型.我们将开始遵循上一章讨论的开发ML模型的步骤.这将帮助我们理解工 ...

  6. app里使用163邮箱发送邮件,被163认为是垃圾邮件的坑爹经历!_ !

    最近有个项目,要发邮件给用户设定的邮箱报警,然后就用了163邮箱,代码是网上借来的^^,如下: package com.smartdoorbell.util; import android.os.As ...

  7. postfix反垃圾邮件说明

    参考地址:http://guailele.blog.51cto.com/1156442/780223 1.打开 smtp 的认证模块 在/etc/postfix/main.cf文件最后加上:   sm ...

  8. postfix疯狂外发垃圾邮件

    分析 一.查找main.cf配置文件 localhost# find / -name main.cf /etc/postfix/main.cf 二.打开/etc/postfix/main.cf来看看. ...

  9. linux 安装wordpress 无故往外发送大量垃圾邮件

    linux 安装wordpress 无故往外发送大量垃圾邮件 始末 表现出来的现象就是, 网站运行没多久,mysql服务就挂了,重启也无法启动起来,提示 No such file or dicrion ...

随机推荐

  1. ip,子网掩码,网关,DNS

    要配置一个局域网通信的计算机(也就是同一个网络): IP地址 子网掩码 要配置一个跨网段通信的计算机: IP地址 子网掩码 网关(路由使用) 要配置一个可上网的计算机: IP地址 子网掩码 网关 DN ...

  2. java学习之文件基本操作

    一.File类 文件的创建 package file; import java.io.File; import java.io.IOException; public class CreateFile ...

  3. [Leetcode][Python]40: Combination Sum II

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 40: Combination Sum IIhttps://oj.leetco ...

  4. ubuntu14.04 qt4 C++开发环境搭建

    preFace:文章包括gnome,vnc-server,qt4安装配置及集成; apt-get update && apt-get upgrade; <一,组件软件包安装> ...

  5. vpn pptp配置

    安装 yum install pptpd 配置pptpd 改动/etc/pptpd.conf设置 localip 192.168.20.1 remoteip 192.168.20.234-238,19 ...

  6. 固定cell.imageView.image的大小

    cell.imageView.image的大小 会随着Cell的高度而变化,不同的图片显示的也不一样,在网上找了几种方法,简单方便的是下面这种: UIImage *icon = [UIImage im ...

  7. 使用Vitamio打造自己的Android万能播放器(6)——在线播放(播放列表)

    前言 新版本的VPlayer由设计转入开发阶段,预计开发周期为一个月,这也意味着新版本的Vitamio将随之发布,开发者们可以和本系列文章一样,先开发其他功能.本章内容为"在线视频播放列表& ...

  8. poj 1064 Cable master ,二分 精度!!!

    给出n根绳子,求把它们分割成K条等长的绳子的最大长度是多少? 二分 用 for(int i=0; i<100; ++i) 取代   while(r-l>eps) 循环100次精度能达到1e ...

  9. js split函数用法总结

    一.split定义:split() 方法用于把一个字符串分割成字符串数组, 返回值: 一个字符串数组. 二.基本用法:stringObject.split(separator,howmany) 1.参 ...

  10. J2EE在Web容器中启动报错:com.sun.jdi.InvocationException occurred invoking method.

    我只是将Hibernate映射文件中的lazy属性有true改为lazy="false",即解决了上述问题.当然我之前也遇到一个问题是不调试时插入数据是不成功的,但是在Debug模 ...