python使用smtp发送邮件碰到的小问题

正常情况下,使用smtp发送邮件时创建的smtp对象是包含SSL的,如下:

        # 登录并发送
        try:
            # 需要SSL认证
            smtpObj = smtplib.SMTP_SSL(self.mail_host)
            smtpObj.login(self.mail_user, self.mail_pass)
            smtpObj.sendmail(self.sender, receivers.email.split(','), self.message.as_string())
            print('success')
            smtpObj.quit()

        except smtplib.SMTPException as e:
            print('error', e)

但是在特定服务器上,例如客户机上。

上述代码会报出10060的错误,即由于连接方在一段时间后没有正常答复,或者连接主机没有反应,连接尝试失败。

        # 登录并发送
        try:
            # 需要SSL认证
            smtpObj = smtplib.SMTP(self.mail_host)
            smtpObj.login(self.mail_user, self.mail_pass)
            smtpObj.sendmail(self.sender, receivers.email.split(','), self.message.as_string())
            print('success')
            smtpObj.quit()

        except smtplib.SMTPException as e:
            print('error', e)

这里要注意,SMTP_SSL和SMTP有区别的,端口不一致,一个是465,一个是25

其次,要注意防火墙,正常情况下,防火墙不允许关闭

这里需要防火墙开放端口

 

你可能感兴趣的:(Python开发中的小问题)