我正在开发一个大项目,其中包括一个用于记住用户的数据库。我将跳过详细信息,但我的客户希望我包含一个功能,通过该功能他们可以备份所有用户数据和其他文件。
我正在考虑一封电子邮件(因为该项目是一个 Android 应用程序),我试图弄清楚如何在电子邮件中发送附件(即 .db sqlite3 文件)。我知道here周围有很多类似的问题,但是这个问题的所有答案都给了我一个错误。这是我得到的最接近的:
此程序发送一封不带附件的电子邮件:
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!")
嗨,这是我使用的代码...事实证明,ubunto 使用与 Windows 不同的方式发送电子邮件。
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(第二个答案)
希望这个答案也能回答其他人的问题