python - 通过soap请求在电子邮件python中嵌入图像
问题描述
我正在尝试使用pythonsuds
来soap
请求和发送电子邮件。此电子邮件需要嵌入图像。
进口:
import uuid
import cgi
import os
from suds.client import Client
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
电子邮件正文:
img = '/path/img.jpg'
msg = MIMEMultipart('related')
img = dict(title=u'Some text…', path=u'/path/img.jpg', cid=str(uuid.uuid4()))
msg_alternative = MIMEMultipart('alternative')
msg.attach(msg_alternative)
msg_text = MIMEText(u'[image: {title}]'.format(**img), 'plain', 'utf-8')
msg_alternative.attach(msg_text)
msg_html = MIMEText(u'<div dir="ltr">'
'<img src="cid:{cid}" alt="{alt}"><br></div>'
.format(alt='Bla', **img),
'html', 'utf-8')
msg_alternative.attach(msg_html)
with open(img['path'], 'rb') as file:
msg_image = MIMEImage(file.read(), name=os.path.basename(img['path']))
msg.attach(msg_image)
msg_image.add_header('Content-ID', '<{}>'.format(img['cid']))
肥皂:
url = "http://XX.X.XX.XX/path/SendEmail.asmx?WSDL"
client = Client(url)
client.set_options(port="ID_NAMEServiceSoap")
client.service.SendEmail("sender@bla.com",
"receive@bla.com",
u"This is a test",
msg.as_string(),
None,
" ",
"secHash")
回答:
Content-Type: multipart/related; boundary="===============4991678697102201166==" MIME-Version: 1.0 --===============4991678697102201166== Content-Type: multipart/alternative; boundary="===============7267000742066247724==" MIME-Version: 1.0 --===============7267000742066247724== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 W2ltYWdlOiBQaWN0dXJlIHJlcG9ydOKApl0= --===============7267000742066247724== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGltZyBzcmM9ImNpZDo0ZTA0NjM4MS0yMjkzLTQwODktYTA5OC0wMmJl MjM5OTQwMzQiIGFsdD0iQmxhIj48YnI+PC9kaXY+ --===============7267000742066247724==-- --===============4991678697102201166== Content-Type: image/jpeg; name="G01.jpg" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-ID: <4e046381-2293-4089-a098-02be23994034> /9j/4AAQSkZJRgABAQEAlQCVAAD/2wBDAAcEBAQFBAcFBQcKBwUHCgwJBwcJDA0LCwwLCw0RDQ0N DQ0NEQ0PEBEQDw0UFBYWFBQeHR0dHiIiIiIiIiIiIiL/2wBDAQgHBw0MDRgQEBgaFREVGiAgICAg ICAgICAgICAhICAgICAgISEhICAgISEhISEhISEiIiIiIiIiIiIiIiIiIiL/wAARCANMBdwDAREA AhEBAxEB/8QAHAABAQEBAQEBAQEAAAAAAAAAAAECAwQFBgcI/8QATRAAAgEDAgMDBwkFBwMDAgcB AAECAwQREiEFMUEGE1EiMkJhcYGxBxQjM1JikaHBFSRy0eE0Q1NjgqKykvDxJXPCFiYXNUR0g6PS 4v/EABsBAQEBAQEBAQEAAAAAAAAAAAABAgUEAwYH/... P//Z --===============4991678697102201166==--
解决方案
推荐阅读
- certificate - 没有证书与私钥匹配
- javascript - Javascript:将日期对象增加一年
- java - Spring MVC 3 - 在标准环境和属性源的帮助下重新加载属性文件
- javascript - 脚本中的切换对我不起作用
- asp.net-core - Dotnet Core - 在启动时配置延迟加载
- r - 如何计算R中给定'x'和'y'位置的轨迹半径
- c++ - 如何在信号处理程序和普通函数中对全局变量进行互斥读取或写入操作
- javascript - 如何在选择元素的选项中存储和检索对象作为值?
- ios - UIDocumentInteractionController 更改共享文件名
- c# - 为具有多个触发器的组合框设置样式时出错