给一个类设置来自其他类的参数- Python

2024-04-24 03:07:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类sendmail,我正在尝试调用它在其他班级。学生argument将决定发送哪封电子邮件。sendmail类中的argument将根据其他类的参数发送邮件打过电话。不过,当执行它时,我得到一条错误消息说argument未定义。你知道吗

这是我的密码:

#!/usr/bin/python
import smtplib
class sendmail(argument):

  TO = 'yourmail@gmail.com'
  if argument=='PIR':
    SUBJECT = 'PIR'
    TEXT = 'Motion is detected'

  gmail_sender = 'mymail@gmail.com'
  gmail_passwd = 'mypwd'

  server = smtplib.SMTP('smtp.gmail.com', 587)
  server.ehlo()
  server.starttls()
  server.ehlo
  server.login(gmail_sender, gmail_passwd)

  BODY = '\r\n'.join([
       'TO: %s' % TO,
       'From: %s' % gmail_sender ,
       'Subject: %s' % SUBJECT ,
       '',
       TEXT
       ])
  try:
    server.sendmail(gmail_sender, [TO], BODY)
    print 'email sent'
  except:
    print 'error'

  server.quit()

Tags: totextcomserverbodyargumentgmailsender
1条回答
网友
1楼 · 发布于 2024-04-24 03:07:30

我想你要找的是一个静态函数。你知道吗

import smtplib
class MailUtils:
    @staticmethod    
    def sendmail(argument):

          TO = 'yourmail@gmail.com'
          if argument=='PIR':
            SUBJECT = 'PIR'
            TEXT = 'Motion is detected'

          gmail_sender = 'mymail@gmail.com'
          gmail_passwd = 'mypwd'

          server = smtplib.SMTP('smtp.gmail.com', 587)
          server.ehlo()
          server.starttls()
          server.ehlo
          server.login(gmail_sender, gmail_passwd)

          BODY = '\r\n'.join([
               'TO: %s' % TO,
               'From: %s' % gmail_sender ,
               'Subject: %s' % SUBJECT ,
               '',
               TEXT
               ])
          try:
            server.sendmail(gmail_sender, [TO], BODY)
            print 'email sent'
          except:
            print 'error'

          server.quit()

你可以这样做:

import MailUtils
MailUtils.sendmail(argument)

注意:如下面的注释所述,如果类包含多个相关函数,而不仅仅是一个函数,那么这种方法最有效。

相关问题 更多 >