Python: как снабдить черновое электронное письмо получателями BCC к Exchange Server через IMAP?

Проблема в том, что граненые диаграммы нельзя наслоить (это потому, что в общем случае нет гарантии, что два слоя будут иметь совместимые фасеты). С другой стороны, многослойные диаграммы могут быть огранены. Например:

# Import data
import altair as alt
from vega_datasets import data

source = data.cars()

# Configure common options
scale = alt.Scale(paddingInner=0)

# Configure heatmap
heatmap = alt.Chart().mark_rect().encode(
    alt.X('Cylinders:O', scale=scale),
    alt.Y('Year:O', scale=scale),
    color='count()'
)

# Configure text
text = alt.Chart().mark_text(baseline='middle').encode(
    x='Cylinders:O',
    y='Year:O',
    text='count()',
    color=alt.value('white')
)

# Draw the chart.
alt.layer(heatmap, text, data=source).facet(
    column='Origin'
)

enter image description here

Обратите внимание, что при использовании этого подхода важно указывать данные на уровне фасета, а не чем в дочерних слоях. Для получения дополнительной информации см. Граненые диаграммы в документах Альтаира.

Сообщение об ошибке здесь раньше было более полезным ... кажется, что библиотека jsonschema сообщает об ошибках проверки схемы иначе, чем раньше.

6
задан stephan 1 July 2009 в 08:23
поделиться

3 ответа

На самом деле код работает нормально. Он создает правильную почту со всеми правильными заголовками, включая скрытую копию.

Как почтовый клиент отображает скрытую копию?

Почтовый клиент (например, Python или MS Outlook через IMAP или MAPI в моем случае) решает, нужно ли и как отображать bcc-заголовки. Например, Outlook не отображает заголовки скрытой копии из папки IMAP. Это функция, позволяющая скрыть получателей скрытой копии друг от друга, если они не были удалены из почты ранее (из стандарта не ясно, разрешено ли одному получателю скрытой копии видеть всех других получателей скрытой копии, см. Wikipedia ).

Кто обрабатывает скрытую копию при отправке электронного письма?

Предположим теперь, что мы составили черновик сообщения в почтовом клиенте и сохранили его в папке IMAP или MAPI. Сервер, предоставляющий папки IMAP / MAPI, оставляет черновик сообщения без изменений. Что происходит с bcc-заголовками при отправке почты, зависит от реализации и может зависеть как от почтового клиента, так и от агента передачи почты (например, MS Exchange Server в моем случае). Короче говоря, люди не согласны с тем, отвечает ли почтовый клиент или агент передачи почты за удаление заголовков скрытой копии. Однако, похоже, что большинство разработчиков придерживаются мнения, что это дело почтового клиента, когда агент передачи почты не касается почты (например, MS Exchange, MS SMTP, Exim, OpenWave). В этом случае агент пересылки почты отправляет электронное письмо получателю, как определено в RCPT TO: сообщения SMTP , а в противном случае оставляет электронное сообщение без изменений. Однако некоторые другие агенты передачи почты удаляют заголовки bcc из писем (например, sendmail, Lotus Notes). Очень подробное обсуждение можно найти в списке рассылки Exim, начиная с здесь .

В случае MS Outlook и MS Exchange, MS Outlook никогда не отправляет скрытую копию (но отправляет отдельные электронные письма для каждого получателя скрытой копии) и MS Exchange не затрагивает заголовки электронной почты, но отправляет полное электронное письмо (возможно, включая получателей скрытой копии) получателям, указанным в RCPT TO: .

Заключение

Я не понял, что нет гарантированное поведение для скрытой копии, и что обычно клиент обрабатывает скрытую копию. Я перепишу свой код Python, чтобы перебрать получателей скрытой копии и сгенерировать одно электронное письмо для каждого получателя скрытой копии.

Очень подробное обсуждение можно найти в списке рассылки Exim, начиная с здесь .

В случае MS Outlook и MS Exchange, MS Outlook никогда не отправляет скрытую копию (но отправляет отдельные электронные письма для каждого получателя скрытой копии) и MS Exchange не затрагивает заголовки электронной почты, но отправляет полное электронное письмо (возможно, включая получателей скрытой копии) получателям, указанным в RCPT TO: .

Заключение

Я не понял, что нет гарантированное поведение для скрытой копии, и что обычно клиент обрабатывает скрытую копию. Я перепишу свой код Python, чтобы перебрать получателей скрытой копии и сгенерировать одно электронное письмо для каждого получателя скрытой копии.

Очень подробное обсуждение можно найти в списке рассылки Exim, начиная с здесь .

В случае MS Outlook и MS Exchange, MS Outlook никогда не отправляет скрытую копию (но отправляет отдельные электронные письма для каждого получателя скрытой копии) и MS Exchange не затрагивает заголовки электронной почты, но отправляет полное электронное письмо (возможно, включая получателей скрытой копии) получателям, указанным в RCPT TO: .

Заключение

Я не понял, что нет гарантированное поведение для скрытой копии, и что обычно клиент обрабатывает скрытую копию. Я перепишу свой код Python, чтобы перебрать получателей скрытой копии и сгенерировать одно электронное письмо для каждого получателя скрытой копии.

но отправляет полное электронное письмо (возможно, включая получателей скрытой копии) получателям, указанным в RCPT TO: .

Заключение

Я не понимал, что нет никакого гарантированного поведения для скрытой копии, и что обычно клиент обрабатывает скрытую копию. Я перепишу свой код Python, чтобы перебрать получателей скрытой копии и сгенерировать одно электронное письмо для каждого получателя скрытой копии.

но отправляет полное электронное письмо (возможно, включая получателей скрытой копии) получателям, указанным в RCPT TO: .

Заключение

Я не понимал, что нет никакого гарантированного поведения для скрытой копии, и что обычно клиент обрабатывает скрытую копию. Я перепишу свой код Python, чтобы перебрать получателей скрытой копии и сгенерировать одно электронное письмо для каждого получателя скрытой копии.

6
ответ дан 16 December 2019 в 21:46
поделиться

Это может быть так по замыслу. В конце концов, весь смысл скрытой копии в том, что получатели скрыты друг от друга.

Я понимаю, что вы не отправляете электронную почту, а просто храните ее. Но я предполагаю, что внутренние правила Exchange вступают в силу, когда сообщение IMAP.appended к папке, вызывая удаление поля bcc.

Очевидно, что когда сообщения сохраняются в папке с помощью Outlook, поле bcc не удаляется . Но я полагаю, что Outlook взаимодействует с Exchange, используя некоторый внутренний механизм (MAPI?).

Все вышеперечисленное - всего лишь догадки.

Вы можете попробовать кое-что забавное:

  • В пустом профиле Outlook / MAPI создайте учетную запись IMAP. , Настройте его для хранения черновиков и отправленных элементов на сервере Exchange.
  • Посмотрите, может ли outlook, использующий IMAP, правильно сохранять скрытые копии черновиков.

Я попробовал описанное выше, используя почтовый клиент Evolution, подключенный к Exchange через IMAP. Используя внешний вид (подключенный обычным способом), я затем взглянул на Черновики и Отправленные. Поле ОЦК отсутствовало в обоих местах.

Я верю, что это поддерживает мою теорию.

1
ответ дан 16 December 2019 в 21:46
поделиться

Попробуйте установить эту альтернативную версию заголовка BCC:

X-Receiver: someguy@gmail.com

Exchange, в частности, будет воспринимать это как BCC, когда вы Отправь это. Но держу пари, что он не будет раздеваться, когда вы пишете через IMAP. Вы можете включить более одного получателя BCC, продублировав эту строку.

Очевидно, это полный взлом.

1
ответ дан 16 December 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: