在发邮件之前,在本机上配好smtp
send_mail.py
import argparse
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from argparse import RawTextHelpFormatter
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('--from_addr', default='fromaddress@test.com')
parser.add_argument('--to_addr', default='apsvvfb@gmail.com')
parser.add_argument('--subject', default='mail title')
parser.add_argument('--filename', default='temp.txt')
parser.add_argument('--body', default='acd\nabc')
args = parser.parse_args()
params = vars(args) # convert to ordinary dict
#print(args)
#with open(params['filename'], 'r') as f:
# body = f.read()
body = params['body']
body = body.replace('\\n', '\n')
msg = MIMEMultipart()
msg['Subject'] = params['subject']
msg['From'] = params['from_addr']
msg['To'] = params['to_addr']
msg.attach(MIMEText(body,'plain','utf-8'))
#msg.attach(MIMEText(body,'html'))
smtp = smtplib.SMTP('localhost')
smtp.sendmail(params['from_addr'], params['to_addr'], msg.as_string())
smtp.close()
注意一下,这里如果直接python send_mail.py
会直接给我的邮箱发
acd
abc
可是如果python send_mail.py --body "abc\nabc"
的话,会往邮箱里发abc\nabc
打印参数print(args)
会发现body那里它自动多加了一个\
Namespace(body='abc\\nbcd', filename='temp.txt', from_addr='fromaddress@test.com', subject='mail title', to_addr='apsvvfb@gmail.com')
所以如果想要换行的话,在代码里应该加上body = body.replace('\\n', '\n')
或者修改如下代码,
body = params['body']
#body = body.replace('\\n', '\n')
msg = MIMEMultipart()
msg['Subject'] = params['subject']
msg['From'] = params['from_addr']
msg['To'] = params['to_addr']
#msg.attach(MIMEText(body,'plain','utf-8'))
msg.attach(MIMEText(body,'html'))
并且调用的时候
python send_mail.py --body 'abc<br/>abc'