S3Email.py 2.7 KB

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