- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在自动生成几个双周报告,所以我决定使用 plot.ly 创建一个线图。此线图具有不同数量的轨迹,具体取决于正在运行的报告。
我已经能够成功地创建绘图,但我发现的所有方法都无法在我的电子邮件中内联显示绘图。这是我的代码:
SMTP_SERVER = "smtp.office365.com"
SMTP_PORT = 587
SMTP_USERNAME = username
SMTP_PASSWORD = password
EMAIL_TO = email_to
EMAIL_FROM = email_from
#here we loop through our data-set and pull out rows to make different traces
for deal in winGraph['DEAL_IDENTIFIER'].unique():
matched_rows = winGraph.loc[winGraph['DEAL_IDENTIFIER'] == deal]
date = matched_rows.DATE.tolist()
winRate = matched_rows.WIN_RATE.tolist()
traces.append(
go.Scatter(
x = date,
y = winRate,
name = str(deal)
)
)
plotly.tools.set_credentials_file(username = 'username', api_key = 'api_key')
fig = dict(data = traces)
imageURL = py.plot(fig,auto_open = False, filename = 'test' )
msg = MIMEMultipart('related')
msg['Subject'] = Header(u"Hello", 'utf-8')
msg['From'] = EMAIL_FROM
msg['To'] = EMAIL_TO
msg_alternative = MIMEMultipart('alternative')
msg.attach(msg_alternative)
msg_text = MIMEText(u'[image: {title}]'.format(**img), 'plain', 'utf-8')
msg_alternative.attach(msg_text)
html = u"""\
<html>
<head></head>
<body style="background-color:#DDDDDD; font-family: calibri;">
<p>
<img src="cid:{cid}" alt="{alt}"><br>
Hi!<br>
How are you?<br>
Below is a summary of your performance
<br>
Top 5 Deals:
{df}
Please review:<br>
The following graph represents your deals win rate over the past two weeks:
<br>
Look at attached spreadsheet for more info. <br>
<img src="data:image/png;base64,{image}">
</a>
<br>
</p>
</body>
</html>
"""
response = requests.get(imageURL + '.png') # request Plotly for the image
response.raise_for_status()
image_bytes = response.content
image = base64.b64encode(image_bytes)
html = html.format( df = topAdv.to_html(index = False, escape = False),image = image,alt=cgi.escape(img['title'], quote=True),**img)
part2 = MIMEText(html, 'html', 'utf-8')
msg_alternative.attach(part2)
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']))
mail = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
mail.ehlo()
mail.starttls()
mail.login(SMTP_USERNAME, SMTP_PASSWORD)
mail.sendmail(EMAIL_FROM, EMAIL_TO, msg.as_string())
mail.quit()
最佳答案
除了在 plotly 的服务器上渲染绘图并将其嵌入为 png,您还可以尝试将绘图直接嵌入为 HTML/SVG/JavaScript(假设现在大多数电子邮件客户端都可以处理它,因为浏览器)用于显示电子邮件的渲染引擎)使用 plotly 的离线功能。我猜人们会喜欢剧情的互动功能......
from plotly.offline import plot
# Generate your plotly figure as fig
div = plot(
fig,
output_type = 'div',
include_plotlyjs = True
)
这将为您提供一个字符串,其中包含您的绘图和包含在 div 标签中的所需 JavaScript。
关于python - 如何使用 smtp 发送 html 电子邮件内嵌的 plot.ly 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43453791/
如果 Rmd 文件中的 R 代码重复使用相同的变量名,则内联 r 表达式似乎返回此变量的最后一个值,而不管内联表达式的位置。除了确保不在文档的不同部分重复使用相同的变量名称之外,是否可以避免这种行为?
我希望多行文本像单个文本 block 一样环绕,例如下面的“Source”和“DEC”字段,而不使用表格。 我想我应该能够使用 inline-block 来让它工作,但我没有成功。 下面是我正在使用的
我不熟悉Inline Anchor styles(link) ,怎样才能让它的作品展现时尚呢? Javascript/JQuery 编码或遗漏了什么? [ http://codepen.io/anon
我正在尝试将嵌入式 ruby 添加到我的 css 样式宽度标签中。 这是目前代码的样子: %"> 不确定我是否只是搞砸了目标变量,或者我的 float 是否已关闭(它正在打印正确的百分比),但
我想制作一个时间轴,但它的结构已损坏。我认为这是因为 display:inline,如果我试图对我的网站这样做,它会破坏它。display: inline-block 也让它变得有趣。 我尝试将 di
这个问题在这里已经有了答案: How to remove the space between inline/inline-block elements? (41 个回答) 关闭 7 年前。 不确定我
我正在尝试使用嵌入式 UIStackViews 来获得如下所示的内容: Label1 ----------------Label2 Label3 -- 所以我在一个水平 UIStackView 中有
是否可以在使用内联 CSS 的同时创建一个盒子模型 hack? 例如: 谢谢! 最佳答案 您也可以在内联样式中使用“前缀”技巧: 只需确保将 IE hack 放在样式属性的末尾即可。然而,我同意尽
有没有人有什么技巧可以在页面上对齐这两个按钮?默认情况下,iframe 版本的 facebook like 按钮显示在 google plus 按钮下方,反之亦然。是否有任何 CSS 技巧可以使它们保
这就是我想要实现的目标。我有一个运行 Suricata 的内联 linux 盒子,能够丢弃数据包。这适用于将所有流量放到 NFQUEUE 0 上然后设置 suricata 监听的标准方法。 我正在编写
我目前正在将元素中的一个页面导出到 Excel,这将不允许链接外部内容,例如外部 CSS。 我想要实现的是一种在我的 View 中包含 CSS 文件但直接从 Visual Studio 自动缩小的 C
在一个两列的框中(column-count: 2),CSS 设置break-inside: avoid 应该避免一些内容从一列中断到其他。这在 Firefox 和 Chrome 中运行良好(使用适当的
几乎完成了我的登录脚本,只需要帮助寻找替代方法: return (mysql_result($query, 0) == 1) ? true : false; 查询: $query = mysqli_q
我正在尝试获取一个具有嵌入式 Tomcat 服务器的 Spring Boot jar,以在运行时加载外部 war 。我正在尝试使用此 post 中显示的技术来执行此操作. Spring Boot应用中
我正在开发 Spring Boot 1.4 应用程序,并且正在为我的 Rest 端点编写集成测试。我正在使用新的测试注释,如下所示: @RunWith(SpringRunner.class) @Spr
我是一名优秀的程序员,十分优秀!