S3Email.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 django.conf import settings
  7. AWS_ACCESS_KEY_ID = settings.AWS_ACCESS_KEY_ID
  8. AWS_SECRET_ACCESS_KEY = settings.AWS_SECRET_ACCESS_KEY
  9. AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY = AWS_ACCESS_KEY_ID[1], AWS_SECRET_ACCESS_KEY[1]
  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. return response['ResponseMetadata']['HTTPStatusCode'] == 200