浏览代码

修改amazon ses发送方式

zhangdongming 1 年之前
父节点
当前提交
c656b63b41
共有 1 个文件被更改,包括 31 次插入30 次删除
  1. 31 30
      Object/AWS/S3Email.py

+ 31 - 30
Object/AWS/S3Email.py

@@ -1,8 +1,11 @@
-import smtplib
 import email.utils
+import smtplib
 from email.mime.multipart import MIMEMultipart
 from email.mime.text import MIMEText
-from Ansjer.config import SES_SENDER, SES_SENDERNAME, SES_USERNAME_SMTP, SES_PASSWORD_SMTP, SES_PORT, SES_HOST
+
+import boto3
+
+from Ansjer.config import AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, LOGGER
 
 
 class S3Email:
@@ -48,37 +51,35 @@ class S3Email:
             print("Email sent!")
 
     @staticmethod
-    def send_email(title, data, username):
+    def send_email(subject, data, username):
         """
         发送亚马逊SES电子邮件
-        @param title: 标题
+        @param subject: 标题
         @param data: 内容
         @param username: 发送到邮箱
         @return: 成功 | 失败
         """
-        SUBJECT = title
-        BODY_TEXT = (title
-                     )
-        BODY_HTML = data
-
-        msg = MIMEMultipart('alternative')
-        msg['Subject'] = SUBJECT
-        msg['From'] = email.utils.formataddr((SES_SENDERNAME, SES_SENDER))
-        msg['To'] = username
-        part1 = MIMEText(BODY_TEXT, 'plain')
-        part2 = MIMEText(BODY_HTML, 'html')
-        msg.attach(part1)
-        msg.attach(part2)
-
-        try:
-            server = smtplib.SMTP(SES_HOST, SES_PORT)
-            server.ehlo()
-            server.starttls()
-            server.ehlo()
-            server.login(SES_USERNAME_SMTP, SES_PASSWORD_SMTP)
-            server.sendmail(SES_SENDER, username, msg.as_string())
-            server.close()
-            return True
-        except Exception as e:
-            print(repr(e))
-            return False
+        client = boto3.client('ses', region_name='us-east-1',
+                              aws_access_key_id=AWS_ACCESS_KEY_ID[1],
+                              aws_secret_access_key=AWS_SECRET_ACCESS_KEY[1])
+        # 构建邮件请求
+        response = client.send_email(
+            Source='rdpublic@ansjer.com',  # 发件人地址
+            Destination={
+                'ToAddresses': [
+                    username  # 收件人地址
+                ]
+            },
+            Message={
+                'Subject': {
+                    'Data': subject  # 邮件主题
+                },
+                'Body': {
+                    'Html': {
+                        'Data': data  # 邮件正文的HTML内容
+                    }
+                }
+            }
+        )
+        LOGGER.info(f'to {username},result:{response}')
+        return response['ResponseMetadata']['HTTPStatusCode'] == 200