diff --git a/mailsender/client.py b/mailsender/client.py index 75152bd9fc285996bf08810242d38c2dc8785d45..a083a68b29f025b474e9fee34a34f4828c70866f 100644 --- a/mailsender/client.py +++ b/mailsender/client.py @@ -7,6 +7,8 @@ import typing from email.header import Header from email.mime.text import MIMEText from typing import Optional, List +from email.mime.application import MIMEApplication +from email.mime.multipart import MIMEMultipart from mailsender.models import (MessageParameters, MailSenderConfig) @@ -58,7 +60,7 @@ class MailSender: raise ValueError("%s not set for %s" % (k, message_type)) return message_parameters - def send_email(self, message: str, message_type: Optional[str] = None): + def send_email(self, message: str, message_type: Optional[str] = None, attachment=[]): if self.sending_disabled: logger.info("Sending of mails is disabled, not sending emails") return False @@ -70,11 +72,17 @@ class MailSender: subject = message_parameters.subject email = smtplib.SMTP(self.smtp_server, self.smtp_port) - message = MIMEText(message, 'plain', 'utf-8') - message['From'] = sender - message['To'] = ", ".join(recipients) - message['Subject'] = Header(subject, 'utf-8') - email.sendmail(sender, recipients, message.as_string()) + msg = MIMEMultipart() + msg['From'] = sender + msg['To'] = ", ".join(recipients) + msg['Subject'] = Header(subject, 'utf-8') + msg.attach(MIMEText(message, 'plain', 'utf-8')) + if attachment: + for f in attachment: + with open(f, 'rb') as a_file: + msg.attach(MIMEApplication(a_file.read(), Name= os.path.basename(f))) + + email.sendmail(sender, recipients, msg.as_string()) email.quit() return True diff --git a/tests/email_send.py b/tests/email_send.py new file mode 100644 index 0000000000000000000000000000000000000000..6cd6900398c009f56b11b012268c9c95e146a4c7 --- /dev/null +++ b/tests/email_send.py @@ -0,0 +1,28 @@ +from email import message +from os import truncate +from smtplib import SMTP, SMTP_PORT +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +import smtplib +import mailsender +from mailsender import client +from mailsender.client import MailSender +from mailsender.models import MessageParameters, MailSenderConfig + +client = MailSender( + MailSenderConfig( + smtp_server = "smtp.gmail.com", + smtp_port = 587, + sending_disabled = False, + message_parameters = MessageParameters( + sender_name = "Kabir", + sender_mail = "testemail@uit.no", + recipients = ["testemail@uit.no", "testemail.@yahoo.com"], + subject = "Hei test" + ) + ) +) + +body = "This is test. Please find the attachment" +client.send_email(body, None, ["sample.pdf", "image1.jpg"]) +#note: copy pdf,image1 to the tests folder before execute this file. \ No newline at end of file