关于C# 程序通过SMTP 发邮件到QQ邮箱无法显示图片 ,这个问题很头痛,在网上找一大堆的回答,但是就是没有确定解决方案,还发现有人上了猪八戒的悬赏的,看来还得靠自己才行,我就开始了漫长的研究,先说一下,我这篇文章是写个开发人员看的,他们在发邮件的时候,包含的html代码无法直接显示图片。
疑问:我不能实现的话?别人怎么实现的?像那些大型的电商网站或者银行发来的账单为何就可以直接显示图片?(其实很多都是无法的显示的)?
A.是邮箱地址的原因吗?
比如说京东商城发来的邮件,但是邮箱地址是他们打来的,我做不了测试,所以无法判断是不是邮箱地址的问题,不排除腾讯把京东的地址设置为可信邮箱地址
B.是发送内容的问题吗?
我把京东可显示图片的邮件的html代码复制了下来,然后用自己的邮箱发送的,居然可以,好神奇。说明是邮件的内容的问题。
接下来我化整为零,看看是具体的哪部分代码起了关键性的作用。最终发现“为了您能够正常收到来自京东的优惠信息和会员邮件,请将添加进您的通讯录 ”,那我将这个关键句子,用style="display:none;"的div包起来,嵌入到我要发的邮件中,结果是可以的。好开心,O(∩_∩)O~~。
C.别的可显示的图片的邮件也是有关键词的吗?
我邮箱里看到了中国传统环保挂历的邮件 ,发现关键词“中国传统环保挂历”也是可以显示图片的。
总结:邮件是否可以显示图片是通过关键词或者关键句来识别的。只要我们找到关键词就可以了。估计这个主要是腾讯没有验证企业的渠道,如果有渠道的话可以通过上传企业资质进行可信任。所以腾讯是通过算法来实现,比如说,包含某关键词的邮件的,大家添加了信任或者是经常点击了显示图片,那么会计算为可信的关键词。以上是我的个人猜测,请大家勿喷!!
解决方案:
1.通过多测试的方式将发送包含自家公司信息,直到测试到可以为止,但是这种测试时间在比较多。
2.直接找京东等大网站的邮件找到不会屏蔽图片关键词,将这些关键词包含进我们的邮件中。因为这个关键词是别的公司的所以要通过 style="display:none;" 的方式实现。