|
@@ -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
|