| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | 
							- from Ansjer.config import ALY_SES_ACCESS_NAME,ALY_SES_ACCESS_PAW,ALY_SES_ACCESS_REPLYTO,AWS_SES_ACCESS_ID,AWS_SES_ACCESS_SECRET,AWS_SES_ACCESS_REGION,SES_COMPANY_EMAIL
 
- from boto3.session import Session
 
- import traceback
 
- import smtplib
 
- import email
 
- from email.mime.multipart import MIMEMultipart
 
- from email.mime.text import MIMEText
 
- from email.mime.image import MIMEImage
 
- from email.mime.base import MIMEBase
 
- from email.mime.application import MIMEApplication
 
- from email.header import Header
 
- class SesClassObject:
 
-    def __init__(self, *args, **kwargs):
 
-         self.access_id = AWS_SES_ACCESS_ID
 
-         self.access_secret = AWS_SES_ACCESS_SECRET
 
-         self.region_name = AWS_SES_ACCESS_REGION
 
-         self.company_email = SES_COMPANY_EMAIL
 
-         self.aliyun_username = ALY_SES_ACCESS_NAME
 
-         self.aliyun_password = ALY_SES_ACCESS_PAW
 
-         self.aliyun_replyto = ALY_SES_ACCESS_REPLYTO
 
-         session = Session(
 
-             aws_access_key_id=AWS_SES_ACCESS_ID,
 
-             aws_secret_access_key=AWS_SES_ACCESS_SECRET,
 
-             region_name=AWS_SES_ACCESS_REGION,
 
-         )
 
-         self.conn = session.client('ses')
 
-    # 发送邮箱阿里云的邮箱接口
 
-    def alyEmailCode(self,send_address_list=[], subject='', body=''):
 
-        print ('我开始发送邮箱咯')
 
-        # 发件人地址,通过控制台创建的发件人地址
 
-        username = self.aliyun_username
 
-        # 发件人密码,通过控制台创建的发件人密码
 
-        password = self.aliyun_password
 
-        # 自定义的回复地址
 
-        replyto = self.aliyun_replyto
 
-        # 收件人地址或是地址列表,支持多个收件人,最多30个
 
-        # rcptto = '***,***'
 
-        # rcptto = '1758730877@qq.com'
 
-        rcptto = send_address_list
 
-        # 构建alternative结构
 
-        msg = MIMEMultipart('alternative')
 
-        msg['Subject'] = Header(subject).encode()
 
-        msg['From'] = '%s <%s>' % (Header('user_server').encode(), username)
 
-        # msg['To'] = rcptto
 
-        msg['Reply-to'] = replyto
 
-        msg['Message-id'] = email.utils.make_msgid()
 
-        msg['Date'] = email.utils.formatdate()
 
-        # 构建alternative的text/plain部分
 
-        # textplain = MIMEText('自定义TEXT纯文本部分', _subtype='plain', _charset='UTF-8')
 
-        # msg.attach(textplain)
 
-        texthtml = MIMEText(body, _subtype='html', _charset='UTF-8')
 
-        msg.attach(texthtml)
 
-        # 发送邮件
 
-        try:
 
-            client = smtplib.SMTP()
 
-            # python 2.7以上版本,若需要使用SSL,可以这样创建client
 
-            # client = smtplib.SMTP_SSL()
 
-            # SMTP普通端口为25或80
 
-            client.connect('smtpdm.aliyun.com', 80)
 
-            # client.connect('smtpdm-ap-southeast-2.aliyun.com', 80)
 
-            # 开启DEBUG模式
 
-            client.set_debuglevel(0)
 
-            client.login(username, password)
 
-            # 发件人和认证地址必须一致
 
-            # 备注:若想取到DATA命令返回值,可参考smtplib的sendmaili封装方法:
 
-            #      使用SMTP.mail/SMTP.rcpt/SMTP.data方法
 
-            client.sendmail(username, rcptto, msg.as_string())
 
-            client.quit()
 
-            print('邮件发送成功')
 
-            return True
 
-        except smtplib.SMTPConnectError as e:
 
-            print('邮件发送失败,连接失败:', e.smtp_code, e.smtp_error)
 
-            return False
 
-        except smtplib.SMTPAuthenticationError as e:
 
-            print('邮件发送失败,认证错误:', e.smtp_code, e.smtp_error)
 
-            return False
 
-        except smtplib.SMTPSenderRefused as e:
 
-            print('邮件发送失败,发件人被拒绝:', e.smtp_code, e.smtp_error)
 
-            return False
 
-        except smtplib.SMTPRecipientsRefused as e:
 
-            print('邮件发送失败,收件人被拒绝:', e.smtp_code, e.smtp_error)
 
-            return False
 
-        except smtplib.SMTPDataError as e:
 
-            print('邮件发送失败,数据接收拒绝:', e.smtp_code, e.smtp_error)
 
-            return False
 
-        except smtplib.SMTPException as e:
 
-            print('邮件发送失败, ', e.message)
 
-            return False
 
-        except Exception as e:
 
-            print('邮件发送异常, ', str(e))
 
-            return False
 
-    def send_email(self, send_address_list=[], subject='', body=''):
 
-         try:
 
-             response = self.conn.send_email(
 
-                 # 发送人
 
-                 Source=self.company_email,
 
-                 Destination={
 
-                     # 收件人
 
-                     'ToAddresses': send_address_list
 
-                     # 'ToAddresses': [
 
-                     #     '1758730877@qq.com',
 
-                     # ],
 
-                 },
 
-                 Message={
 
-                     # 标题
 
-                     'Subject': {
 
-                         'Data': subject,
 
-                         'Charset': 'utf-8'
 
-                     },
 
-                     'Body': {
 
-                         'Html': {
 
-                             'Data': body,
 
-                             'Charset': 'utf-8'
 
-                         }
 
-                     }
 
-                 },
 
-             )
 
-         except Exception as e:
 
-             errorInfo = traceback.format_exc()
 
-             print(errorInfo)
 
-             self.send_email(send_address_list=[self.company_email], subject='邮件发送错误信息提醒', body='<br>请向开发人员反馈并修改</br>' +'\n错误信息位'+str(errorInfo))
 
-         if response['MessageId']:
 
-             return True
 
-         else:
 
-             print(response)
 
-             self.send_email(send_address_list=[self.company_email],subject='邮件发送错误信息提醒',body='<br>请向开发人员反馈并修改</br>')
 
-             return False
 
 
  |