SAS - отправка электронной почты, пробелы добавляются в HTML - PullRequest
1 голос
/ 18 апреля 2019

Когда я пытаюсь отправить электронное письмо с одной строкой символов HTML, SAS вставляет символ пробела в середину строки, отбрасывая HTML. Например, если я запускаю следующий код:

FILENAME outbox EMAIL
   TO = "address@domain.com" 
   SUBJECT = "test" 
   CONTENT_TYPE="text/html";

DATA _NULL_;
   FILE outbox;
   PUT "<table><tr><th>column1</th><th>column2</th><th>column3</th></tr><tr><td>filler</td><td>filler</td><td>filler</td></tr><tr><td>filler</td><td>filler</td><td>filler</td></tr><tr><td>filler</td><td>filler</td><td>filler</td></tr><tr><td>filler</td><td>filler</td><td>filler</td></tr></table>";
RUN;

Я получаю следующее электронное письмо, где таблица сбрасывается, потому что SAS добавляет пробел между < и /td>.

enter image description here

Я знаю, что мог бы просто разделить строку или сохранить ее в отдельных строках набора данных и отправить электронное письмо таким образом, но теперь мне любопытно. Кто-нибудь знает, почему SAS делает это?

UPDATE:

Если я отформатирую строку по-другому, примерно так:

DATA _NULL_;
   FILE outbox;
   PUT "<table>
         <tr>
            <th>column1</th>
            <th>column2</th>
            <th>column3</th>
         </tr>
         <tr>
            <td>filler</td>
            <td>filler</td>
            <td>filler</td>
         </tr>
         <tr>
            <td>filler</td>
            <td>filler</td>
            <td>filler</td>
         </tr>
         <tr>
            <td>filler</td>
            <td>filler</td>
            <td>filler</td>
         </tr>
         <tr>
            <td>filler</td>
            <td>filler</td>
            <td>filler</td>
         </tr>
         </table>";
RUN;

Пробел перемещается в ячейку (2,1) между 'f' и 'i' слова 'filler'. Я предполагаю, что это из-за всех лишних пробелов, которые я добавил к самой строке, чтобы отформатировать ее таким образом. По-видимому, для добавления пробела каждые 256 символов, независимо от форматирования.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Добавьте </tr> перед </table> и разбейте строку на несколько строк, потому что «PUT» может принимать строки, которые должны иметь менее 262 символов:

    DATA _NULL_;
   FILE outbox;
   PUT "<table>
        <tr>
        <th>column1</th> <th>column2</th> <th>column3</th>
        </tr>";
    put "<tr>
        <td>filler</td> <td>filler</td> <td>filler</td>
        </tr>";
    put "<tr>
        <td>filler</td> <td>filler</td> <td>filler</td>
        </tr>";
    put "<tr>
        <td>filler</td> <td>filler</td> <td>filler</td> 
        </tr>";
    put "<tr>
        <td>filler</td> <td>filler</td> <td>filler</td>
        </tr>
        </table>";
RUN;
0 голосов
/ 18 апреля 2019

вы забыли один из закрывающих тегов строки таблицы в конце таблицы, убедитесь, что вы закрыли все теги правильно, тогда вы не получили ни одной из этих проблем в своем электронном письме.

...