| encrypt_method: str | encrypt_method: str | ||||
| def send_mail(parmas: SendEmailToolParameters): | |||||
| def send_mail(params: SendEmailToolParameters): | |||||
| timeout = 60 | timeout = 60 | ||||
| msg = MIMEMultipart("alternative") | msg = MIMEMultipart("alternative") | ||||
| msg["From"] = parmas.email_account | |||||
| msg["To"] = parmas.sender_to | |||||
| msg["Subject"] = parmas.subject | |||||
| msg.attach(MIMEText(parmas.email_content, "plain")) | |||||
| msg.attach(MIMEText(parmas.email_content, "html")) | |||||
| msg["From"] = params.email_account | |||||
| msg["To"] = params.sender_to | |||||
| msg["Subject"] = params.subject | |||||
| msg.attach(MIMEText(params.email_content, "plain")) | |||||
| msg.attach(MIMEText(params.email_content, "html")) | |||||
| ctx = ssl.create_default_context() | ctx = ssl.create_default_context() | ||||
| if parmas.encrypt_method.upper() == "SSL": | |||||
| if params.encrypt_method.upper() == "SSL": | |||||
| try: | try: | ||||
| with smtplib.SMTP_SSL(parmas.smtp_server, parmas.smtp_port, context=ctx, timeout=timeout) as server: | |||||
| server.login(parmas.email_account, parmas.email_password) | |||||
| server.sendmail(parmas.email_account, parmas.sender_to, msg.as_string()) | |||||
| with smtplib.SMTP_SSL(params.smtp_server, params.smtp_port, context=ctx, timeout=timeout) as server: | |||||
| server.login(params.email_account, params.email_password) | |||||
| server.sendmail(params.email_account, params.sender_to, msg.as_string()) | |||||
| return True | return True | ||||
| except Exception as e: | except Exception as e: | ||||
| logging.exception("send email failed") | logging.exception("send email failed") | ||||
| return False | return False | ||||
| else: # NONE or TLS | else: # NONE or TLS | ||||
| try: | try: | ||||
| with smtplib.SMTP(parmas.smtp_server, parmas.smtp_port, timeout=timeout) as server: | |||||
| if parmas.encrypt_method.upper() == "TLS": | |||||
| with smtplib.SMTP(params.smtp_server, params.smtp_port, timeout=timeout) as server: | |||||
| if params.encrypt_method.upper() == "TLS": | |||||
| server.starttls(context=ctx) | server.starttls(context=ctx) | ||||
| server.login(parmas.email_account, parmas.email_password) | |||||
| server.sendmail(parmas.email_account, parmas.sender_to, msg.as_string()) | |||||
| server.login(params.email_account, params.email_password) | |||||
| server.sendmail(params.email_account, params.sender_to, msg.as_string()) | |||||
| return True | return True | ||||
| except Exception as e: | except Exception as e: | ||||
| logging.exception("send email failed") | logging.exception("send email failed") |