def send_email(email_conf, server_conf): """sends email notification of finished torrent""" # Send multipart message with text and html if email_conf.has_key("message"): # Send Multipart email if email_conf.has_key("message_html"): mime_message = MIMEMultipart("alternative") msg_plain = MIMEText(email_conf["message"].encode('utf-8'), "plain", _charset='utf-8') msg_html = MIMEText(email_conf["message_html"].encode('utf-8'), "html", _charset='utf-8') mime_message.attach(msg_plain) mime_message.attach(msg_html) else: # Send plain message mime_message = MIMEText(email_conf["message"].encode('utf-8'), "plain", _charset='utf-8') elif email_conf.has_key("message_html"): # Send html message mime_message = MIMEText(email_conf["message"].encode('utf-8'), "html", _charset='utf-8') else: log.warn("Email config must contain either 'message' or 'message_html'") return False mime_message["Subject"] = email_conf["subject"] mime_message["From"] = server_conf["from_address"] mime_message["To"] = email_conf["to_address"] port = smtplib.SMTP_PORT if len(server_conf["smtp_port"].strip()) > 0: try: port = int(server_conf["smtp_port"]) except: pass try: mailServer = smtplib.SMTP(server_conf["smtp_server"], port) except Exception, e: log.error("There was an error sending the notification email: %s" % str(e)) return False
log.error("There was an error sending the notification email: %s" % str(e)) return False log.info("Sending email message:\nTo: %s\nFrom: %s\nSubject: %s\n" % \ (mime_message["To"], mime_message["From"], mime_message["Subject"])) log.info("Server: %s, port: %s, authentication: %s" % (server_conf["smtp_server"], server_conf["smtp_port"], server_conf["smtp_authentication"])) if server_conf["smtp_authentication"]: mailServer.ehlo() mailServer.starttls() mailServer.ehlo() try: mailServer.login(server_conf["smtp_username"], server_conf["smtp_password"]) except smtplib.SMTPHeloError: log.warn("The server didn't reply properly to the helo greeting") except smtplib.SMTPAuthenticationError: log.warn("The server didn't accept the username/password combination") try: mailServer.sendmail(server_conf["from_address"], email_conf["to_address"], mime_message.as_string()) mailServer.quit() except Exception, e: log.error("Sending email notification failed: %s", str(e)) return False else: log.info("Sending email notification of finished torrent was successful") return True def send_torrent_email(email_configurations, email_msg, subscription_data=None, torrent_name_list=None, defered=False, callback_func=None, email_data={}):