Решено Про исходящие письма, principal, недовольство гугла и все такое

kolka

Green Team
16.02.2013
32
7
BIT
0
Периодически возникает необходимость пользователю A отправить письмо от имени B (emailB), с ответом на адрес C (emailC). Баян, конечно, но рецепт не очевиден.
Итак, используется всего два поля:
Код:
    docMemo.Principal = fixPrincipal( emailB )
    docMemo.ReplyTo = emailC
Пока все понятно, вопрос что за фикс принципал? Вот тут первая часть магии. Чтобы Notes корректно генерировал письмо и гугл и ему подобные не ругались
Undeliverable mail: 'From' address is not specified
требуется в конец адреса приклеить домен товарища A, по крайней мере где-то в интернете я такой хинт нашел. Идея искать/хранить где-то домен мне сразу не понравилась, поэтому была сделана попытка использовать только собаку от него. Чудо, работает.
Код:
'For external recipients like gmail is important to add a Domain sign at the end of email address
'otherwise Undeliverable mail: 'From' address is not specified
Private Function fixPrincipal( principal As String ) As String
    On Error GoTo catch
   
    If InStr( principal, {>} ) > 0 Then
        fixPrincipal = Replace( principal, {>}, {@>} )
        GoTo finally
    End If
   
    fixPrincipal = principal & {@}
   
    GoTo finally
catch:
    throwException
finally:
End Function
Внимательный читатель обратит внимание на символ '>' в коде. И, да, это вторая магия. Чтобы получатель не видел вторую собаку в адресе отправителя имеет смысл все адреса подать в формате RFC 822.
B и C могут быть одним и тем же адресом.

Бонус: немного ричтекст магии.
Есть: оригинальный документ с вложениями (аттачами).
Хочу: открыть новый документ с тем же содержимым в UI. В ходе работы/просмотра я могу передумать и отказаться от сохранения документа.
Технически обычно при копировании ричтекста с аттачментами из одного дока в другой сохраняют второй документ, иначе все вложения ломаются/теряются.
Альтернатива: doc.computeWithForm. Важно: поле Form в этом новом doc должно отсутствовать.
 

kolka

Green Team
16.02.2013
32
7
BIT
0
я где-то уже упоминал трюк с инмемори
Очень может быть. Переделывал почти полностью работу с письмами и для forward этот трюк отлично зашел. А в этих ваших интернетах пока найдешь все детали нужные, уже и не помнишь где и кому спасибо сказать.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!