Skip to main content
 首页 » 编程设计

python之mailjet 以 txt 形式发送带有附件的电子邮件

2024年10月17日30myhome

另一个程序发送到我的脚本已经完成的信件:

http://pastebin.com/XvnMrKzE

因此,我解析了 from_email 和 to_email,对文本进行了一些更改并使用 mailjet 发送了它.

当我使用 smtp 执行此操作时:

def send(sender, to, message): 
    smtp = smtplib.SMTP(SERVER, PORT) 
    smtp.ehlo() 
    smtp.starttls() 
    smtp.ehlo() 
    smtp.login(USER,PASSWORD) 
    logger.info('Sending email from %s to %s' % (sender, to)) 
    smtp.sendmail(sender, to, message) 
    logger.info('Done') 
    smtp.quit() 

它运行良好。然后我需要使用 mailjet。我创建了类似的功能:

def send_with_mailjet(sender, to, message): 
    mailjet = Client(auth=('key', 'key')) 
    email = { 
        'FromName': 'Support', 
        'FromEmail': sender, 
        'Subject': 'Voice recoginition', 
        'Text-Part': message, 
        'Html-part': message, 
        'Recipients': [{'Email': to},] 
    } 
    logger.info('Sending email from %s to %s' % (sender, to)) 
    result = mailjet.send.create(email) 
    logger.info('Done. Result: %s' % result) 

但是我收到的是短信,不是邮箱里的附件。

请您参考如下方法:

您应该使用官方的 Mailjet 包装器,它是 Mailjet 维护的 API 客户端。如文档中所述,这是发送附件的方式:http://dev.mailjet.com/guides/?python#sending-with-attached-files

""" 
This calls sends an email to the given recipient. 
""" 
from mailjet import Client 
import os 
api_key = os.environ['MJ_APIKEY_PUBLIC'] 
api_secret = os.environ['MJ_APIKEY_PRIVATE'] 
mailjet = Client(auth=(api_key, api_secret)) 
data = { 
  'FromEmail': 'pilot@mailjet.com', 
  'FromName': 'Mailjet Pilot', 
  'Subject': 'Your email flight plan!', 
  'Text-part': 'Dear passenger, welcome to Mailjet! May the delivery force be with you!', 
  'Html-part': <h3>Dear passenger, welcome to Mailjet!</h3>May the delivery force be with you!', 
  'Recipients': [{ "Email": "passenger@mailjet.com"}], 
  'Attachments': 
        [{ 
            "Content-type": "text/plain", 
            "Filename": "test.txt", 
            "content": "VGhpcyBpcyB5b3VyIGF0dGFjaGVkIGZpbGUhISEK" 
        }] 
} 
result = mailjet.send.create(data=data) 
print result.status_code 
print result.json()