最近一些天在学python,我觉得这门语言这门简单又很好玩,为什么不把这门语言当做程序员学语言的敲门砖了,而选择那么复杂的C语言。在学python的过程中,有学习到python有可以发送邮件的功能,我就在想node会不会也有发送邮件的模块工具了,果不其然,让我找到一个,也就是本文所要介绍到的nodemailer了,npm官方地址:https://www.npmjs.com/package...

python发送邮件简单实现


不多说,直接看代码:

#-*-coding:utf8-*-
import smtplib
from email.mime.text import MIMEText

mail_host='smtp.126.com'    //设置主机,如果是QQ请换成smtp.qq.com
mail_user='xxxxxxxx@126.com'        //账户
mail_pass = '这里填入授权码,下面会说到'    //邮箱授权码,非密码

me = 'Leo Angel'+'<'+mail_user+'>' //发件人
to = 'xxxxxxxxx@qq.com'                 //收件人
msg = MIMEText("Test",_subtype='plain',_charset='utf-8')
msg['Subject'] = 'Hello'    //主题
msg['From'] = me        //发件人
msg['To'] = to            //收件人
try:
    server = smtplib.SMTP()        //创建一个SMTP对象
    server.connect(mail_host)        //连接主机
    server.login(mail_user,mail_pass)    //登录账号
    server.sendmail(me,to,msg.as_string())    //发送邮件
    server.close()                //关闭SMTP对象
    print '邮件发送成功'            //打印发送成功提示信息
except Exception as e:
    print e            //打印错误日志

开启SMTP服务


我以QQ邮箱126邮箱举例:
QQ邮箱:
首先打开你的QQ邮箱,点击设置,选择邮箱设置第二项帐户,鼠标下拉到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,开启第一项POP3/SMTP服务,如下图所示,开启成功后会生成授权码给你,对应代码的pass字段,选择填入即可

126邮箱:
同QQ邮箱基本一样,登陆之后点击设置下拉菜单POP3/SMTP/IMAP,勾选POP3/SMTP服务,成功之后会生成授权码,填入对应的pass字段

发送邮件代码如下:


首先创建项目文件夹,然后再里面打开终端输入npm install nodemailer --save安装nodemailer模块,新建app.js文件,输入以下代码,最后执行node app,成功之后到你收件人邮箱就可以发现收到了一条新信息

var mail = require('nodemailer');//引入nodemailer模块
var transport = mail.createTransport({
    host:'smtp.qq.com',        //主机,如果是126邮箱,请换成smtp.126.com
    secureConnection:true,    //使用安全连接
    port:465,            //STMP端口号
    auth:{
        user:"xxxxxxxx@xx.com", //你的邮箱账号
        pass:"填对应邮箱的授权码"    //授权码
    }
});
var options ={
    from:'"YOURNAME" xxxxxxxx@xx.com',//YOURNAME将变为你邮件的名字
    to:"xxxxxxxx@126.com,xxxxxxxx@qq.com,xxxxxx@gmail.com",//收件人
    subject:'Hello',    //主题
    text:"World",        //正文
    attachments:[{        //附件
        filename:"附加文件",    //附件名字
        path:"./app.js"        //附件路径
    }]
};
transport.sendMail(options,function (err, res) {
    if(err) console.log(err);
    else console.log(res);
});

luckyw
685 声望33 粉丝