PHP的单引号与双引号
服务端接收android手机端软件由用户输入的内容,阍将此内容通过邮件方式发送到用户输入的邮箱中。为了实现异步发送,增加服务端的响应时间,邮件发送是通过python脚本实现的。服务端在接收用户输入的内容时,要对接收的字符串做一些转换。即将换行转为<br>,空格转为 ,还包括<和>两个符号。今天在处理回车转义时,犯一个低级错误。在此记录一下:
由于习惯,快速写了下面代码对换行符进行转义
$content=str_replace('\n','<br>',$content);
在接收的邮件中,当然没有仍何效果。为此问题还特意请同事debug一下手机端发送的内容值:
到构造content值时是可以查看到换行符为\n,到发送前查看的content值已经是换过行的文本。其实这就和html中的textarea中一样。在textarea中输入的内容换行,你是看不到\n这样的字符的。
在对其它需要转义的字符转换都OK,在将眼睛瞄向上行代码时,突然想到单引号的问题,于是将\n外改为双引号。成功对换行符的转换。
$content=str_replace("\n",'<br>',$content);
这个问题实质就是PHP中单引号与双引号的区别。所以在项目开发中,要认真严谨,往往出现的错误都是一些看似简单问题,这些问题由于不易发现,很难发觉。
python发送邮件内容支持html
text_msg = email.MIMEText.MIMEText('wwaaa<br>bbb',_charset="utf-8")
main_msg.attach(text_msg)
以上面这种方式发送邮件时,会对html字符自动转义,即对<转为< >转为>
如果要通过html方式发送,在构造内容时用以下方案
# -*- coding: utf-8 -*-
import smtplib
import email.MIMEMultipart# import MIMEMultipart
import email.MIMEText# import MIMEText
import email.MIMEBase# import MIMEBase
import os.path
import sys
from email.header import Header
import mimetypes
import email.MIMEImage# import MIMEImage
#....
text_msg = email.MIMEText.MIMEText('wwaaa<br>bbb','html',_charset="utf-8")
main_msg.attach(text_msg)
或者:
from email.mime.text import MIMEText
text_msg = MIMEText('aaa<br>bbb','html',_charset="utf-8")