2017-04-18 21 views
0

私はattachmantで電子メールを送信するためにsmptを使用しようとしています。ただし、私のファイルは "doc"または "txt"タイプで、 "pdf"タイプの添付ファイルを送信したいと思います。python + smtp添付ファイル付きのメールを送信するには?

import smtplib 
import base64 
from email.mime.multipart import MIMEMultipart 
from email.mime.application import MIMEApplication 
import os 
server=smtplib.SMTP() 
server.connect("smtp..com") 
server.login("[email protected]","YYYYYY") 
msg=MIMEMultipart('') 
msg['From']="[email protected]" 
msg['Subject']="opp" 
with open("D:\log1.doc", 'rb') as f: 
    content = base64.standard_b64encode(f.read()).decode() 
part = MIMEApplication(content) 
newfilename = 'resume.pdf' 
part.add_header('Content-Disposition', 'attachment', filename=newfilename) 
msg.attach(part) 
msg['To']="[email protected]" 
server.send_message(msg) 

エラーが発生しました!添付ファイルを開くことができません!どうすればこの問題を解決できますか? ありがとうございました。

+1

あなたは3つのことを混同している:電子メールとで宣言されているようにSMTPを使用すると、MIMEタイプで完了※*電子メールを送信しているプロトコルは、添付ファイルのコンテンツタイプですファイルに含まれる実際のコンテンツの種類。あなたがpdfとしてdocファイルを送ろうとするなら、それを最初に変換しなければなりません。 –

答えて

0

.txtファイルを取り込み、.pdfとして電子メールで送信することはできません。最初にPDFに変換する必要があります。 .txtから.pdfにファイルの名前を変更しようとする可能性がありますが、コンテンツの配置とコンテンツの種類を設定する必要があるため、これはあまり効果がありません。

https://www.davidfischer.name/2015/08/generating-pdfs-with-and-without-python/How to create a PDF with python

0
import string 
import time 
from email.header import Header 
from email.mime.text import MIMEText 
from getpass   import getpass 
from smtplib   import SMTP_SSL 
from email.MIMEMultipart import MIMEMultipart 

import smtplib 
msg = MIMEMultipart() 
filename = "textfile.txt" 
f = file(filename) 
fromaddr = '*******@gmail.com' 
toaddrs = 'gamil addr' 
#msg = 'There was a terrible error that occured and I wanted you to know!' 

attachment = MIMEText(f.read()) 
attachment.add_header('Content-Disposition', 'attachment', filename=filename)   
msg.attach(attachment) 
# Credentials (if needed) 
username = 'gamil addr' 
password = 'passwrd' 

# The actual mail send 
#server = smtplib.SMTP('smtp.gmail.com:587') 
server = smtplib.SMTP('smtp.gmail.com:587') 
server.starttls() 
server.login(username,password) 
server.sendmail(fromaddr, toaddrs, msg.as_string()) 
server.quit() 
関連する問題