Guest User

Untitled

a guest
Mar 31st, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. class EmailSender(object):
  2. def __init__(self, user, password, server_host, port=25, sender_name=None):
  3. self.password = password
  4. self.user = user
  5. self.server_host = server_host
  6. self.port = port
  7. self.sender_name = sender_name
  8.  
  9. self.subject = "default subject"
  10. self.recipient_list = []
  11. self.recipient_address_list = []
  12. self.msg_content = 'from email sender'
  13. self.msg = MIMEMultipart()
  14.  
  15. self.attached = 0
  16.  
  17. def add_recipient(self, address, name):
  18. formatted = formataddr((Header(name, 'utf-8').encode(), address))
  19. self.recipient_list.append(formatted)
  20. self.recipient_address_list.append(address)
  21. return self
  22.  
  23. def set_content(self, message):
  24. self.msg_content = message
  25. return self
  26.  
  27. def add_attachment(self, file_path, main_type, sub_type, file_name=None):
  28. if not file_name:
  29. file_name = file_path.split('/')[-1]
  30. with open(file_path, 'rb') as f:
  31. mime = MIMEBase(_maintype=main_type, _subtype=sub_type, filename=file_name)
  32. mime.add_header('Content-Disposition', 'attachment', filename=file_name)
  33. mime.add_header('Content-ID', '<{}>'.format(self.attached))
  34. mime.add_header('X-Attachment-Id', str(self.attached))
  35. mime.set_payload(f.read())
  36. encoders.encode_base64(mime)
  37. self.msg.attach(mime)
  38. return self
  39.  
  40. def set_subject(self, subject):
  41. self.subject = Header(subject, 'utf-8').encode()
  42. return self
  43.  
  44. def send(self):
  45. if not self.sender_name:
  46. name, addr = parseaddr(self.user)
  47. from_ = Header(name, 'utf-8').encode()
  48. else:
  49. from_ = Header(self.sender_name, 'utf-8').encode()
  50. to_ = ','.join(self.recipient_list)
  51.  
  52. mime_text = MIMEText(self.msg_content, 'plain', 'utf-8')
  53. self.msg.attach(mime_text)
  54. self.msg['From'] = from_
  55. self.msg['To'] = to_
  56. self.msg['Subject'] = self.subject
  57.  
  58. server = smtplib.SMTP(self.server_host, self.port)
  59. server.starttls()
  60. server.login(self.user, self.password)
  61. server.sendmail(from_addr=self.user, to_addrs=self.recipient_address_list, msg=self.msg.as_string())
  62. server.quit()
Add Comment
Please, Sign In to add comment