邮件发送代码

来源:互联网 发布:sql2005数据库复制 编辑:程序博客网 时间:2024/06/17 03:35
  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)