Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从unix使用sendmail添加附件_Python_Unix_Sendmail_Python 2.6 - Fatal编程技术网

Python 从unix使用sendmail添加附件

Python 从unix使用sendmail添加附件,python,unix,sendmail,python-2.6,Python,Unix,Sendmail,Python 2.6,我正在使用以下代码从unix发送电子邮件 代码 我不知道如何将附件添加到此电子邮件(附件位于不同的目录/my/new/dir/)Sendmail是一个极其简单的程序。它知道如何通过smtp发送文本块。如果您想拥有附件,则必须将其转换为一个文本块,并使用(在您的示例中)p.write()将其添加到邮件中 这很难,但是您可以使用电子邮件模块(python核心的一部分)为您做很多工作 更好的是,您可以使用smtplib(也是core的一部分)来处理邮件的发送 查看一个工作示例,演示如何使用电子邮件和s

我正在使用以下代码从unix发送电子邮件

代码


我不知道如何将附件添加到此电子邮件(附件位于不同的目录/my/new/dir/)

Sendmail是一个极其简单的程序。它知道如何通过smtp发送文本块。如果您想拥有附件,则必须将其转换为一个文本块,并使用(在您的示例中)p.write()将其添加到邮件中

这很难,但是您可以使用
电子邮件
模块(python核心的一部分)为您做很多工作

更好的是,您可以使用
smtplib
(也是core的一部分)来处理邮件的发送


查看一个工作示例,演示如何使用
电子邮件和
smtplib
发送带有附件的邮件。使用
电子邮件.mime
包创建邮件,而不是手动生成邮件,这将为您节省大量麻烦

例如,发送带有附件的文本消息可以非常简单:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

msg = MIMEMultipart()
msg['From'] = 'fromaddress'
msg['To'] = 'toaddres'
msg['Subject'] = 'subject'
msg.attach(MIMEText('your text message'))
with open(filename, 'rb') as f:
    attachment = MIMEApplication(f.read(), 'subtype')
    attachment['Content-Disposition'] = 'attachment; filename="%s";' % filename
    msg.attach(attachment)
message = msg.as_string()
然后,您可以将消息写入sendmail,或使用smtplib发送消息


'subtype'
应替换为所附文档的mime子类型,或不发送带有默认类型
应用程序/八位字节流的附件。或者,如果您知道您的文件是文本,您可以使用
MIMEText
而不是
MIMEApplication

我通常使用以下文件作为附件发送文件“file\u name.dat”:

uuencode file_name.dat file_name.dat | mail -s "Subject line" arnab.bhagabati@gmail.com

以不可读的格式发送消息--======================0631434354==内容类型:应用程序/子类型MIME版本:1.0内容传输编码:base64内容处置:附件:文件名=文件名;TG9NZ2LUZYBTDGFYDHMKKIOQKIOQKIOQKIOQKIOQKIOQKIOQKIOQKIOQKIOQKIOQKIOQKIOQCIOCAGICAGIGIE9KYKF1DG9WDXJNZSBGAWXLIEZVDW5KICAGICAG是正确的,这是附加的文件,bas64编码,
电子邮件
包会自动为您完成这项工作。任何电子邮件客户端都可以阅读。尝试查看任何带有附件的邮件的来源,您将看到类似的内容。。。如果您想了解更多信息,请阅读有关MIME的文章,了解我必须更改的正确文件名“附件:文件名=%s;”对"依恋",;文件名=%s;'(用“;”而不是“:”@Jakob-是的,你是对的,应该是分号。更正,thx。这可以用蟒蛇的方式表示吗?
uuencode file_name.dat file_name.dat | mail -s "Subject line" arnab.bhagabati@gmail.com