邮件发送代码

  1. qq邮箱需要使用ssl连接, 其次需要对邮箱进行配置,开启pop3/smtp 和imap/smtp服务,并申请授权码用于替代登录密码。另外,端口号配置看这里。
  2. scrapy的mail功能只有在scrapy项目中启动才有效, 单独的调用无效(这是测试结论)
方法一: smtplib模块
  1. 一般形式(1)

        import smtplib
        from email.mime.text import MIMEText
    
        _user = "qq号@qq.com"
        _pwd = ""
        _to = "qq号@qq.com"
    
        msg = MIMEText("Test")
        msg["Subject"] = "don't panic"
        msg["From"] = _user
        msg["To"] = _to
    
        try:
            s = smtplib.SMTP_SSL("smtp.qq.com", 465)
            s.login(_user, _pwd)
            s.sendmail(_user, _to, msg.as_string())
            s.quit()
            print "Success!"
        except smtplib.SMTPException, e:
            print "Falied,%s" % e
        pass
  2. 一般形式(2)

        import smtplib
        from email.mime.text import MIMEText
        from email.header import Header
    
        sender = 'qq号@qq.com'
        receiver = 'qq号@qq.com'
        subject = 'python email test'
        smtpserver = 'smtp.qq.com'
        username = 'qq号'
        password = '*******'# 这里填写授权码
    
        msg = MIMEText('Hello Python', 'text', 'utf-8')
        msg['Subject'] = Header(subject, 'utf-8')
    
        smtp = smtplib.SMTP_SSL()
        smtp.connect(smtpserver, port=465)
        smtp.login(username, password)
        smtp.sendmail(sender, receiver, msg.as_string())
        smtp.quit()
  3. 交互形式

       import smtplib
       from getpass import getpass
    
       def prompt(prompt):
           return input(prompt).strip()
    
       fromaddr = prompt("From: ")
       toaddrs = prompt("To: ").split()
       subject = prompt("Subject: ")
       print("Enter message, end with ^D (Unix) or ^Z (Windows):")
       # Add the From: To: and Subject: headers at the start!
       msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
               % (fromaddr, ", ".join(toaddrs), subject))
       while True:
            try:
                line = input()
            except EOFError:
                break
            if not line:
                break
            msg = msg + line
    
        print("Message length is", len(msg))
    
        server = smtplib.SMTP_SSL('smtp.qq.com', port=465)
        # 如果是其他的服务,只需要更改 host 为对应地址,port 对对应端口即可
        # server = smtplib.SMTP_SSL(host='smtp.qq.com', port=465)
        server.set_debuglevel(1)  # 开启调试,会打印调试信息
        print("--- Need Authentication ---")
        # username = prompt("Username: ")
        # password = getpass("Password: ")
        username = "qq号"
        password = ""
        server.login(username, password)
        server.sendmail(fromaddr, toaddrs, msg)
        server.quit()
方法二: scrapy 的mail功能
  1. 嵌在scrapy爬虫代码中才有效,单独调用无效

    
         from scrapy.mail import MailSender
    
         mailer = MailSender(
                    smtphost="smtp.qq.com",  # 发送邮件的服务器
                    smtpport=465,  # 端口号
                    smtpuser="qq号@qq.com",  # 用户名
                    smtppass="×××××",  # 发送邮箱的密码不是你注册时的密码,而是授权码!!!切记!
                    mailfrom="qq号@qq.com",  # 邮件发送者
                    smtpssl=True,
                )
         body = u""" this is a test of scrapy mail sender, it's my pleasure to receive your reaction."""
         subject = u'test of scrapy mail moudle!!!'
    
                # 如果说发送的内容太过简单的话,很可能会被当做垃圾邮件给禁止发送
         mailer.send(to=["qq号@qq.com", ], subject=subject, body=body)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值