[python]发邮件

这篇博客介绍了如何在Python环境中配置SMTP发送邮件,强调了在编写代码时需要注意邮件内容换行的问题,提供了修改代码的建议。
摘要由CSDN通过智能技术生成

在发邮件之前,在本机上配好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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值