使用python发送个人邮箱和企业邮箱区别以及如何使用exchange server 发送邮件

对于邮箱协议和常用的服务器配置,请见 here

使用个人邮箱和企业邮箱的代码有点差别

使用个人邮箱,QQ为例

密码使用qq的授权码,进入网页版qq邮箱->账号下smtp服务部分可看见

#发送邮件通知成绩
for stu in student:
    smtpObj = smtplib.SMTP('smtp.qq.com', 587)
    #smtpObj.set_debuglevel(1) # 方便debug
    smtpObj.ehlo()
    smtpObj.starttls()

    scoresend = str(int(exam) * int(exam_proportion) / 100 + int(dailyscore) * int(
                dailyscore_proportion) / 100 + int(homework) * int(homework_proportion) / 100 + int(
                checkscore) * int(checkscore_proportion) / 100 + int(experiment) * int(
                experiment_proportion) / 100)

    text = 'Subject: ' + courseTitle + ' score is:  ' + scoresend  # 邮件内容
    msg = MIMEText(text)
    if float(scoresend) >= 60:
        msg['Subject'] = u'Score Indicate'
    else:
        msg['Subject'] = u'WARNING'
    #将example替换成你的QQ号码
    msg['From'] = 'example@qq.com'
    msg['To'] = stu.email
    #将example替换成你的QQ号码,并填写password,此处的password不是QQ密码,而是腾讯授权码
    smtpObj.login('example@qq.com', '授权码')
    smtpObj.sendmail(msg['From'], msg['To'], msg.as_string())
    smtpObj.quit()

使用企业邮箱

如果使用的是企业邮箱,那么需要将smtpObj = smtplib.SMTP('smtp.qq.com', 587)替换为smtpObj = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465)
此外,需要将如下两行代码注释掉:

# smtpObj.ehlo()
# smtpObj.starttls()

注意此处的企业邮箱密码并非授权码,是登录密码

smtpObj = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465)
# smtpObj.ehlo()
# smtpObj.starttls()

context['site'] = site_url()
context['site_name'] = config.site_name
message = render_to_string(template_name, context)
subject = ''.join(subject.splitlines())

msg = MIMEText(message)
msg['Subject'] = subject
msg['From'] = '企业邮箱账号'
msg['To'] = to[0]
smtpObj.login('企业邮箱账号', '企业邮箱密码')
smtpObj.sendmail(msg['From'], msg['To'], msg.as_string())
smtpObj.quit()

补充

常用邮箱SMTP加密方式

使用上述SMTP协议发送邮件实则发送的是明文邮件,如果想要加密,有如下几种方式。
1)明文传输: 端口号是25

server = smtplib.SMTP(smtp_sever,25)

2)SSL加密: 端口号是465,通信过程加密,邮件数据安全。

server = smtplib.SMTP_SSL(smtp_sever,465)

3)TLS加密: 端口号是587,通信过程加密,邮件数据安全,使用正常的smtp端口。对于TLS加密方式需要先建立SSL连接,然后再发送邮件。此处使用starttls()来建立安全连接

server = smtplib.SMTP(smtp_sever,587)
server.starttls()

不同邮箱支持不同的加密协议,常用邮箱支持的加密方式和对应端口号如下:

邮箱SMTP服务器端口号支持加密方式
163smtp.163.com25/465明文/SSL加密
126smtp.126.com25/465明文/SSL加密
QQsmtp.qq.com25/465/587明文/SSL加密/TLS加密
Gmailsmtp.gmail.com587TLS加密

登录gmail常见问题

如果使用gmail作为发送方,除了SMTP服务器要改成smtp.gmail.com外,还需要把端口改成587,密码直接使用gmail的登录密码即可。但依然可能会登录失败。原因是目前gmail对安全性较低的应用的访问权限进行控制,我们需要手动设置。点击进行Gmail安全性较低的应用的访问权限设置,点击界面如下,设置启用即可。

在这里插入图片描述

exchange server 发送邮件

def Email(to, content):
    urllib3.disable_warnings()
    creds = Credentials(
        username='algex\spsaccount',
        password='Spsaccount'
    )
    config = Configuration(server="smtp.algex.asmpt.com", credentials=creds, auth_type=NTLM)
    account = Account(
        primary_smtp_address='Spsaccount@alg.asmpt.com',
        credentials=creds,
        autodiscover=False,
        config=config,
        access_type=DELEGATE
    )
 
 
 
    m = Message(
        account=account,
        subject="Guest pass key generated",
        body=HTMLBody(content),
        to_recipients = [Mailbox(email_address=to)],
        cc_recipients = [Mailbox(email_address=cc)],
    )
 
    m.send()

参考

https://blog.csdn.net/zyx_ly/article/details/88024031

https://www.cnblogs.com/jpinsz/p/12418876.html

https://www.cnblogs.com/jpinsz/p/12420991.html
https://blog.csdn.net/qq_21649903/article/details/113612153?ops_request_misc=&request_id=&biz_id=102&utm_term=%25E4%25BD%25BF%25E7%2594%25A8python%25E5%258F%2591%25E9%2580%2581%25E4%25B8%25AA%25E4%25BA%25BA%25E9%2582%25AE%25E7%25AE%25B1%25E5%2592%258C%25E4%25BC%2581%25E4%25B8%259A%25E9%2582%25AE%25E7%25AE%25B1%25E5%258C%25BA%25E5%2588%25AB&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-113612153.pc_search_result_hbase_insert

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值