2016-09-27 2 views
0

Я работаю над большим проектом, который включает в себя базу данных для запоминания пользователей. il пропустить подробности, но мой клиент хочет, чтобы я включил функцию, с помощью которой он может создавать резервные копии всех пользовательских данных и других файлов.Python - отправка электронной почты с приложением

Я думал об электронном письме (поскольку проект является приложением для Android), и я пытался выяснить, как вы можете отправить прикрепление (например, файл sqlite3 .db) в электронном письме. Я знаю, что много ответов на вопросы по поводу более here, но все ответы на вопрос this дают мне ошибку. здесь ближе всего, что я получил:

Этой программа отправляет электронную почту без вложений:

import smtplib 

from email.mime.multipart import MIMEMultipart 

from email.mime.text import MIMEText 

boodskap = MIMEText("Toekomsweb Epos toets", 'plain') 

van_adres = "from adres" 

na_adres = "to adres" 

epos_liggaam = MIMEMultipart('alternatief') 

epos_liggaam['Subject'] = "Toets" 

epos_liggaam['From'] = van_adres 

epos_liggaam['To'] = na_adres 

epos_liggaam.attach(boodskap) 

mail = smtplib.SMTP('smtp.gmail.com',587) 

mail.ehlo() 

mail.starttls() 

mail.login(van_adres,'PASSWORD') 

mail.sendmail(van_adres,na_adres,epos_liggaam.as_string()) 

mail.close() 
print("succes!") 

пожалуйста, простите мое плохое переменное именование, его не на английском.

любая помощь при отправке приложения?

Спасибо!

+0

Почему бы не просто отправить файл резервной копии в какой-то выделенный FTP-сервер? Отправка этого сообщения электронной почты кажется очень плохой идеей - по крайней мере, поскольку на стороне сервера STMP могут быть ограничены ограничения, которые не позволят вам отправить резервную копию в один прекрасный день (когда снимок БД будет увеличен). –

+0

Хорошо, вы подтвердили, что сделали некоторые исследования, указав код и ссылаясь на другие вопросы и ответы от SO. Но вы говорите, что другие ответы * дают вам ошибку *, не объясняя, что такое код, используемый при тестировании, и какова была ошибка. Вы должны показать это, чтобы получить помощь в его отладке. –

+0

Ошибка, которую я получил: ошибка: [Errno 111] Connection отказался, но не волновался, я понял, по какой-то причине linux имеет другой способ отправки электронной почты, поэтому проблема была не в приложении, а скорее с отправкой ... Я отвечу на свой вопрос с кодом, который я использовал, чтобы заставить его работать ... –

ответ

0

Привет, это код, который я использовал ... получается, что ubunto использует другой способ отправки электронной почты, чем окна.

import smtplib 

from email.mime.multipart import MIMEMultipart 

from email.mime.text import MIMEText 

from email.mime.base import MIMEBase 

from email import encoders 

import os 

boodskap = MIMEText("Toekomsweb Epos toets", 'plain') 

van_adres = 'From adres' 

na_adres = 'To adres' 

epos_liggaam = MIMEMultipart('alternatief') 

epos_liggaam['Subject'] = "Toets" 

epos_liggaam['From'] = van_adres 

epos_liggaam['To'] = na_adres 

epos_liggaam.attach(boodskap) 

f = "toets.db" 
part = MIMEBase('application', "octet-stream") 
part.set_payload(open(f,"rb").read()) 
encoders.encode_base64(part) 
part.add_header('Content-Disposition', 'attachment; filename="{0}"'.format(os.path.basename(f))) 
epos_liggaam.attach(part) 

mail = smtplib.SMTP('smtp.gmail.com',587) 

mail.ehlo() 

mail.starttls() 

mail.login(van_adres,'PASSWORD') 

mail.sendmail(van_adres,na_adres,epos_liggaam.as_string()) 

mail.close() 
print("succes!") 

этого ответ был адаптирован из here (второго ответа)

надежды, что этот ответ будет ответить на другой вопрос людей как хорошо

Смежные вопросы