我有一些python代码,可以发送带有嵌入在"<a href="link">Link</a>"标记中的urls的电子邮件。
单击来自Gmail或Outlook 365 web邮件客户端的链接会导致页面断开,这是因为它们似乎都在URL中插入了原始空格字符或'%20‘。有趣的是,这似乎发生在两个客户端的相同位置。
该链接是一个Kibana仪表板链接,因此有嵌入的Rison代码。
链接应如下所示:
<a href="http://localhost:5601/app/kibana?#/visualize/edit/BetterPie?_g=(refreshInterval:(display:Off,pause:!f,value:0),time:(from:now-60d,mode:quick,to:now))&_a=(filters:!(('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'animals',key:breed,negate:!f,value:'lion'),query:(match:(breed:(query:lion,type:phrase)))),('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'animals',key:age,negate:!f,value:'2'),query:(match:(age:(query:2,type:phrase)))),('$state':(store:appState),meta:(alias:!n,disabled:!f,index:'animals',key:name,negate:!f,value:'nala'),query:(match:(name:(query:nala,type:phrase))))),linked:!f,query:(query_string:(analyze_wildcard:!t,query:'*')),uiState:(spy:(mode:(fill:!f,name:!n))),vis:(aggs:!((id:'1',params:(),schema:metric,type:count),(id:'2',params:(field:breed,order:desc,orderBy:'1',size:5),schema:segment,type:terms),(id:'3',params:(field:age,order:desc,orderBy:'1',size:5),schema:segment,type:terms),(id:'4',params:(field:name,order:desc,orderBy:'1',size:5),schema:segment,type:terms)),listeners:(),params:(addLegend:!t,addTooltip:!t,isDonut:!f,shareYAxis:!t),title:'BetterPie',type:pie))">Dashboard Link</a>但它要么是'%20‘,要么是一个空格在这里被注入:
query:'*')),%20uiState我使用python的smtplib模块对消息进行编码并发送电子邮件,具体操作如下:
htmlEnc = MIMEText(body, 'html')不确定为什么空间会被注入,所以任何帮助都会非常感谢。
发布于 2017-05-27 07:30:31
我在PHP中遇到了同样的问题,比如发送电子邮件。对我来说,问题是每行1000个字符的问题,它会自动导致在第1000个字符处插入换行符...这可能就是你的网址。为了修复PHP发送的电子邮件中的问题,首先我在电子邮件标题中添加了Content-Transfer-Encoding: quoted-printable。其次,我通过PHP函数quoted_printable_encode()处理我的电子邮件正文。我不知道Python等效函数,但希望我对同类问题的解决方案能为您指明正确的方向。
https://stackoverflow.com/questions/39168914
复制相似问题