S3Email.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import email.utils
  2. import smtplib
  3. from email.mime.multipart import MIMEMultipart
  4. from email.mime.text import MIMEText
  5. import boto3
  6. from Ansjer.config import LOGGER
  7. from django.conf import settings
  8. AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID
  9. AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY
  10. class S3Email:
  11. def faEmail(self, sys_msg_text, username):
  12. SENDER = 'rdpublic@ansjer.com' # 邮箱名
  13. SENDERNAME = 'rdpublic@ansjer.com'
  14. USERNAME_SMTP = 'AKIA2E67UIMD6MOSFKXW' # 带有邮件权限的 IAM 帐号
  15. PASSWORD_SMTP = 'BHuQ6EQTtFK4qh46o9omO9ZzO3NXzjk/JCWLXnVFmqzM' # 带有邮件权限的 IAM 密码
  16. PORT = '587'
  17. HOST = 'email-smtp.us-east-1.amazonaws.com'
  18. SUBJECT = sys_msg_text
  19. BODY_TEXT = (sys_msg_text
  20. )
  21. BODY_HTML = """<html>
  22. <head></head>
  23. <body>
  24. <h1>{}<h1>
  25. </body>
  26. </html>
  27. """.format(sys_msg_text)
  28. msg = MIMEMultipart('alternative')
  29. msg['Subject'] = SUBJECT
  30. msg['From'] = email.utils.formataddr((SENDERNAME, SENDER))
  31. msg['To'] = username
  32. part1 = MIMEText(BODY_TEXT, 'plain')
  33. part2 = MIMEText(BODY_HTML, 'html')
  34. msg.attach(part1)
  35. msg.attach(part2)
  36. try:
  37. server = smtplib.SMTP(HOST, PORT)
  38. server.ehlo()
  39. server.starttls()
  40. server.ehlo()
  41. server.login(USERNAME_SMTP, PASSWORD_SMTP)
  42. server.sendmail(SENDER, username, msg.as_string())
  43. server.close()
  44. except Exception as e:
  45. print("Error: ", e)
  46. else:
  47. print("Email sent!")
  48. @staticmethod
  49. def send_email(subject, data, username):
  50. """
  51. 发送亚马逊SES电子邮件
  52. @param subject: 标题
  53. @param data: 内容
  54. @param username: 发送到邮箱
  55. @return: 成功 | 失败
  56. """
  57. client = boto3.client('ses', region_name='us-east-1',
  58. aws_access_key_id=AWS_ACCESS_KEY_ID[1],
  59. aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1])
  60. # 构建邮件请求
  61. response = client.send_email(
  62. Source='rdpublic@ansjer.com', # 发件人地址
  63. Destination={
  64. 'ToAddresses': [
  65. username # 收件人地址
  66. ]
  67. },
  68. Message={
  69. 'Subject': {
  70. 'Data': subject # 邮件主题
  71. },
  72. 'Body': {
  73. 'Html': {
  74. 'Data': data # 邮件正文的HTML内容
  75. }
  76. }
  77. }
  78. )
  79. LOGGER.info(f'to {username},result:{response}')
  80. return response['ResponseMetadata']['HTTPStatusCode'] == 200