ในการส่งอีเมลที่มีเนื้อหาผสมต้องตั้งค่า ประเภทเนื้อหา ส่วนหัวเป็น หลายส่วน/ผสม . จากนั้น สามารถระบุส่วนข้อความและไฟล์แนบภายในขอบเขต .
ขอบเขตเริ่มต้นด้วยยัติภังค์สองตัวตามด้วยหมายเลขเฉพาะ ซึ่งไม่สามารถปรากฏในส่วนข้อความของอีเมลได้ ขอบเขตสุดท้ายที่แสดงถึงส่วนสุดท้ายของอีเมลต้องลงท้ายด้วยยัติภังค์สองตัว
ไฟล์ที่แนบมาควรเข้ารหัสด้วย pack("m") ฟังก์ชันให้มีการเข้ารหัส base64 ก่อนส่ง
ตัวอย่าง
ต่อไปนี้เป็นตัวอย่างซึ่งส่งไฟล์ /tmp/test.txt เป็นสิ่งที่แนบมา ลองสักครั้ง −
#!/usr/bin/python import smtplib import base64 filename = "/tmp/test.txt" # Read a file and encode it into base64 format fo = open(filename, "rb") filecontent = fo.read() encodedcontent = base64.b64encode(filecontent) # base64 sender = '[email protected]' reciever = '[email protected]' marker = "AUNIQUEMARKER" body =""" This is a test email to send an attachement. """ # Define the main headers. part1 = """From: From Person <[email protected]> To: To Person <[email protected]> Subject: Sending Attachement MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=%s --%s """ % (marker, marker) # Define the message action part2 = """Content-Type: text/plain Content-Transfer-Encoding:8bit %s --%s """ % (body,marker) # Define the attachment section part3 = """Content-Type: multipart/mixed; name=\"%s\" Content-Transfer-Encoding:base64 Content-Disposition: attachment; filename=%s %s --%s-- """ %(filename, filename, encodedcontent, marker) message = part1 + part2 + part3 try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, reciever, message) print "Successfully sent email" except Exception: print "Error: unable to send email"